应用程序启动时的 TimePickerDialog 弹出窗口

TimePickerDialog popup on start of the apps

我试图让 datepickerdialog 和 timepickerdialog 在点击 textview 时弹出。我有一个问题,每次我启动我的应用程序时,TimePickerDialog 都会自动弹出,尽管我什至没有点击文本框。有什么办法可以解决这个问题吗?

public class MainActivity extends AppCompatActivity implements OnClickListener{
EditText e_tarikh, e_masa;
String tarikh, masa;
private DBOperations db;
private EditText fromDateEtxt;
private EditText toTimeEtxt;
private int mHour, mMinute;

private DatePickerDialog fromDatePickerDialog;
private TimePickerDialog toTimePickerDialog;

private SimpleDateFormat dateFormatter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    db = new DBOperations(this);
    e_tarikh = (EditText) findViewById(R.id.tarikh);
    e_masa = (EditText) findViewById(R.id.masa);


    dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
    findViewsById();
    setDateTimeField();

}
public void saveData(View view)
{

    tarikh = e_tarikh.getText().toString();
    masa = e_masa.getText().toString();

    BackgroundTask backgroundTask = new BackgroundTask(this);
    backgroundTask.execute("add_info", tarikh, masa);
    finish();
}


private void findViewsById() {
    fromDateEtxt = (EditText) findViewById(R.id.tarikh);
    fromDateEtxt.setInputType(InputType.TYPE_NULL);
    fromDateEtxt.requestFocus();

    toTimeEtxt = (EditText) findViewById(R.id.masa);
    toTimeEtxt.setInputType(InputType.TYPE_NULL);
}

private void setDateTimeField() {
    fromDateEtxt.setOnClickListener(this);
    toTimeEtxt.setOnClickListener(this);
    final Calendar c = Calendar.getInstance();
    mHour = c.get(Calendar.HOUR_OF_DAY);
    mMinute = c.get(Calendar.MINUTE);

    Calendar newCalendar = Calendar.getInstance();
    fromDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            Calendar newDate = Calendar.getInstance();
            newDate.set(year, monthOfYear, dayOfMonth);
            fromDateEtxt.setText(dateFormatter.format(newDate.getTime()));
        }

    },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));

    toTimePickerDialog = new TimePickerDialog(this,
            new TimePickerDialog.OnTimeSetListener() {

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

                    e_masa.setText(hourOfDay + ":" + minute);
                }
            }, mHour, mMinute, false);
    toTimePickerDialog.show();
}

@Override
public void onClick(View view) {
    if(view == fromDateEtxt) {
        fromDatePickerDialog.show();
    } else if(view == toTimeEtxt) {
        toTimePickerDialog.show();
    }
}

这是因为您在 onCreate() 中通过调用此 setDateTimeField(); 方法创建了 timePicker 从您的 setDateTimeField(); 方法中删除 TimePicker:

private void setDateTimeField() {
    fromDateEtxt.setOnClickListener(this);
    toTimeEtxt.setOnClickListener(this);
    final Calendar c = Calendar.getInstance();
    mHour = c.get(Calendar.HOUR_OF_DAY);
    mMinute = c.get(Calendar.MINUTE);

    Calendar newCalendar = Calendar.getInstance();
    fromDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            Calendar newDate = Calendar.getInstance();
            newDate.set(year, monthOfYear, dayOfMonth);
            fromDateEtxt.setText(dateFormatter.format(newDate.getTime()));
        }

    },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));

    //Remove this
    /*toTimePickerDialog = new TimePickerDialog(this,
            new TimePickerDialog.OnTimeSetListener() {

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

                    e_masa.setText(hourOfDay + ":" + minute);
                }
            }, mHour, mMinute, false);
    toTimePickerDialog.show();*/
}

请删除此行:

toTimePickerDialog.show();

来自你的

setDateTimeField()

您需要做的就是从您的 setDateTimeField() 方法中删除下面的行,因为您不想显示 toTimePickerDialog 直到您单击您的按钮或 textView。现在它在你的 onCreate 方法中,所以每次你 运行 你的应用程序时它 运行s。

toTimePickerDialog.show();