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); } });