TimePicker对话框
我正在使用onclick监听器的多个textviews,它将我引导到TimePicker对话框。
但是在阅读完教程后,我似乎无法知道如何编写代码,
textview1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showDialog(TIME_DIALOG_ID); } }); textview2.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showDialog(TIME_DIALOG_ID); } });
要显示对话框:
@Override protected Dialog onCreateDialog(int id) { switch (id) { case TIME_DIALOG_ID: return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute, true); } return null; }
最后,
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(android.widget.TimePicker view, int hourOfDay, int minute) { mHour = hourOfDay; mMinute = minute; } };
现在,对于在TimePickerDialog.OnTimeSetListener回调之后调用timepicker的textview的.setText,我该如何编写代码?
答案很简单,但我缺乏OOP知识,仍然在学习。 谢谢…
您需要使用全局变量。 比如, String fromWhere="";
现在,
textview1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { fromWhere="textview1"; showDialog(TIME_DIALOG_ID); } }); textview2.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { fromWhere="textview2"; showDialog(TIME_DIALOG_ID); } }); ... private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(android.widget.TimePicker view, int hourOfDay, int minute) { if(fromWhere.equals(textview1)) // set hour and minute to according variable and textview else if(fromWhere.equals(textview2)) // set hour and minute to according variable and textview .. //so on for others //mHour = hourOfDay; //mMinute = minute; fromWhere=""; } };
在类中创建一个成员变量(比如int whichViewClicked = 0
)来跟踪单击的int whichViewClicked = 0
以启动时间选择器。
现在,如果单击textview1设置whichViewClicked = 1,如果单击textview2设置whichViewClicked = 2,依此类推。 在onTimeSet()方法中,检查whichViewClicked的值并相应地设置textview文本
使用EditText,我们可以花时间pikker长按编辑文本。
EditText timeDisplay=(EditText)findViewById(R.id.timeDisplay); timeDisplay.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showDialog(TIME_DIALOG_ID); } });