应用程序启动时的 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();
我试图让 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();