Android 从片段显示TimePickerDialog
我在网上搜索了一下,发现了一个有用的代码,可以处理和管理像这样的TimePickerDialog 我确实尝试过它,但当我将它集成到扩展到fragment的类中时,TimePickerDialog并没有在单击按钮时显示 你知道我该如何实现这个吗Android 从片段显示TimePickerDialog,android,dialog,android-fragments,datetimepicker,Android,Dialog,Android Fragments,Datetimepicker,我在网上搜索了一下,发现了一个有用的代码,可以处理和管理像这样的TimePickerDialog 我确实尝试过它,但当我将它集成到扩展到fragment的类中时,TimePickerDialog并没有在单击按钮时显示 你知道我该如何实现这个吗 public class First_Activity extends Fragment implements ActionBar.TabListener { static final int TIME_DIALOG_ID = 1111;
public class First_Activity extends Fragment implements ActionBar.TabListener {
static final int TIME_DIALOG_ID = 1111;
public Button btnClick;
TextView STtime;
int hour,minute;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
STtime = (TextView) getActivity().findViewById(R.id.textView2);
/********* display current time on screen Start ********/
final Calendar c = Calendar.getInstance();
// Current Hour
hour = c.get(Calendar.HOUR_OF_DAY);
// Current Minute
minute = c.get(Calendar.MINUTE);
// set current time into output textview
updateTime(hour, minute);
/********* display current time on screen End ********/
btnClick = (Button) getActivity().findViewById(R.id.button4);
btnClick.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getActivity().showDialog(TIME_DIALOG_ID);
}
});
}
protected Dialog onCreateDialog(int id) {
switch (id) {
case TIME_DIALOG_ID:
// set time picker as current time
return new TimePickerDialog(getActivity(), timePickerListener, hour, minute,
false);
}
return null;
}
private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minutes) {
// TODO Auto-generated method stub
hour = hourOfDay;
minute = minutes;
updateTime(hour,minute);
}
};
private static String utilTime(int value) {
if (value < 10)
return "0" + String.valueOf(value);
else
return String.valueOf(value);
}
private void updateTime(int hours, int mins) {
String timeSet = "";
if (hours > 12) {
hours -= 12;
timeSet = "PM";
} else if (hours == 0) {
hours += 12;
timeSet = "AM";
} else if (hours == 12)
timeSet = "PM";
else
timeSet = "AM";
String minutes = "";
if (mins < 10)
minutes = "0" + mins;
else
minutes = String.valueOf(mins);
// Append in a StringBuilder
String aTime = new StringBuilder().append(hours).append(':')
.append(minutes).append(" ").append(timeSet).toString();
STtime.setText(aTime);
}
}
public class First_活动扩展片段实现ActionBar.TabListener{
静态最终整数时间对话框ID=1111;
公共按钮b单击;
文本视图STtime;
整小时,分钟;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
STtime=(TextView)getActivity().findViewById(R.id.textView2);
/*********在屏幕开始时显示当前时间********/
最终日历c=Calendar.getInstance();
//当前时间
小时=c.get(日历小时);
//当前分钟
分钟=c.get(日历分钟);
//将当前时间设置为输出文本视图
更新时间(小时、分钟);
/*********在屏幕结束时显示当前时间********/
btnClick=(按钮)getActivity().findViewById(R.id.button4);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
getActivity().showDialog(时间对话框ID);
}
});
}
受保护的对话框onCreateDialog(int id){
开关(id){
案例时间\u对话框\u ID:
//将时间选择器设置为当前时间
返回新的TimePickerDialog(getActivity(),timePickerListener,小时,分钟,
假);
}
返回null;
}
私有TimePickerDialog.OnTimeSetListener timePickerListener=新TimePickerDialog.OnTimeSetListener(){
@凌驾
时间集上的公共void(时间选择器视图,整数小时日,整数分钟){
//TODO自动生成的方法存根
小时=小时/天;
分钟=分钟;
更新时间(小时、分钟);
}
};
私有静态字符串使用时间(int值){
如果(值<10)
返回“0”+字符串。valueOf(value);
其他的
返回字符串.valueOf(value);
}
私有void更新时间(整数小时,整数分钟){
字符串时间集=”;
如果(小时数>12){
小时数-=12;
timeSet=“PM”;
}否则,如果(小时==0){
小时数+=12;
timeSet=“AM”;
}否则,如果(小时==12)
timeSet=“PM”;
其他的
timeSet=“AM”;
字符串分钟数=”;
如果(分钟<10)
分钟=“0”+分钟;
其他的
分钟=字符串.valueOf(分钟);
//在StringBuilder中追加
String aTime=new StringBuilder().append(小时).append(“:”)
.append(分钟).append(“”).append(时间集).toString();
STtime.setText(aTime);
}
}
我建议您为框架创建一个布局文件,如下所示:
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.your_custom_layout, container, false);
Button b = (Button) v.findViewById(R.id.button);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
createDialog(YOUR_ID).show();
}
});
return v;
}
public Dialog createDialog(int id) {
switch (id) {
case TIME_DIALOG_ID:
// set time picker as current time
return new TimePickerDialog(getActivity(), timePickerListener, hour, minute, false);
}
return null;
}
}
您的_custom_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Spawn Dialog" />
</LinearLayout>
因此,您有一个包含按钮布局的片段,单击按钮时,会生成对话框。我建议您为框架创建一个布局文件,如下所示:
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.your_custom_layout, container, false);
Button b = (Button) v.findViewById(R.id.button);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
createDialog(YOUR_ID).show();
}
});
return v;
}
public Dialog createDialog(int id) {
switch (id) {
case TIME_DIALOG_ID:
// set time picker as current time
return new TimePickerDialog(getActivity(), timePickerListener, hour, minute, false);
}
return null;
}
}
您的_custom_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Spawn Dialog" />
</LinearLayout>
因此,您有一个包含按钮布局的片段,单击该按钮时,将生成对话框。请将您的代码发布到应该显示对话框的片段中。请参考此@Phil我刚刚添加了代码,在应该显示对话框的片段中发布您的代码。请参考@Phil我刚刚添加的代码