Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从片段显示TimePickerDialog_Android_Dialog_Android Fragments_Datetimepicker - Fatal编程技术网

Android 从片段显示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;

我在网上搜索了一下,发现了一个有用的代码,可以处理和管理像这样的TimePickerDialog

我确实尝试过它,但当我将它集成到扩展到fragment的类中时,TimePickerDialog并没有在单击按钮时显示

你知道我该如何实现这个吗

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我刚刚添加的代码