Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.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
Java 不显示android时间选择器对话框的当前时间_Java_Android_Android Edittext_Timepicker - Fatal编程技术网

Java 不显示android时间选择器对话框的当前时间

Java 不显示android时间选择器对话框的当前时间,java,android,android-edittext,timepicker,Java,Android,Android Edittext,Timepicker,我的应用程序中有一个timeIneditText。单击时,将弹出时间选择器对话框 timeIn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //shows timePick isEdited=true; Fragme

我的应用程序中有一个timeIn
editText
。单击时,将弹出时间选择器对话框

    timeIn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) { //shows timePick
                    isEdited=true;
                    Fragment fragDialog = getSupportFragmentManager().findFragmentByTag("TimePicker");
                    if (fragDialog == null) { // Fragment not added
                        tp.setFlag(TimePick.FLAG_START_DATE);
                        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
                        tp.show(ft, "TimePicker");
                    } else {

                        // already active
                    }
                }
            });


  public static class TimePick extends android.support.v4.app.DialogFragment implements TimePickerDialog.OnTimeSetListener {

        public static final int FLAG_START_DATE = 00;
        public static final int FLAG_END_DATE = 01;
        private int flag = 00;

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {

            final Calendar c = Calendar.getInstance();
            int hour = c.get(Calendar.HOUR_OF_DAY);
            int minute = c.get(Calendar.MINUTE);
            return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
        }

        public void setFlag(int i) {
            flag = i;
        }


        @Override
        public void onTimeSet(TimePicker view, int hourofDay, int minute) {

            if (flag == FLAG_START_DATE) {
                timeIn.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
                TimeIn = timeIn.getText().toString();
            }
            if (flag == FLAG_END_DATE) {
                timeOut.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
                TimeOut = timeOut.getText().toString();
            }



        }

    }

选择的时间可以是
setText
中的
timeIn
。但是,当我再次单击
editText
中的时间时,
timePicker对话框将弹出当前时间。是否可以使其显示选定的时间而不是当前时间?如果是第一次单击,则仅显示当前时间

这不是你在这里做的吗

final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
您正在将当前时间传递给对话框,这就是它显示当前时间的原因

解决方案:

保存所选时间,并在创建对话框时将其传递给类,并在此代码中使用该时间。如果没有任何选定的时间,则使用当前时间。一点
if-else
阻塞和一些变量就可以了

在外部类中定义这些变量

public static int inHour = -1;
public static int inMin = -1;
public static int outHour = -1;
public static int outMin = -1;
像这样更新
onTimeSet
方法

if (flag == FLAG_START_DATE) {
    inHour = hourofDay;
    inMin = minute;
    timeIn.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
    TimeIn = timeIn.getText().toString();
}
else if (flag == FLAG_END_DATE) {
    outHour = hourofDay;
    outMin = minute;
    timeOut.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
    TimeOut = timeOut.getText().toString();
}
onCreateDialog
中的当前代码替换为

final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int min = c.get(Calendar.MINUTE);
if((flag == FLAG_START_DATE) && inHour != -1 && inMin != -1) 
{
     hour = inHour;
     min = inMin;
}
else if((flag == FLAG_END_DATE) && outHour != -1 && outMin != -1) 
{
     hour = outHour;
     min = outMin;
}

return new TimePickerDialog(getActivity(), this, hour, min, DateFormat.is24HourFormat(getActivity()));

保存所选时间,并在创建对话框时将其传递给全班。您能解释更多吗?谢谢谢谢,先生,我稍后会尝试,并告诉您,先生,我在这两行中遇到了错误<代码>小时=小时/天;分钟=分钟
错误:(192,13)错误:非静态变量hour不能从静态上下文中引用
@John Make
hour
min
静态lke
公共静态int hour=-1
让我们来看看。