我用Edittext实现了一个android屏幕。当用户触摸此EditText时,会出现datepickerdialog。这一切都很好,但我的问题是,当用户触摸EditText时,会出现两个datepickerdialog。我只想要一个人出现。
我想知道是否有人遇到过这个问题,还是只有我?如果是,有什么解决方案吗?我谷歌了,但却一无所获:/
关于代码,这就是我所拥有的:
datebox = (TextView)findViewById(R.id.datebox);
datebox.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
timedatedialog(false);
return false;
}});
public void timedatedialog(boolean flag) {
if(flag==false){
DatePickerDialog dateDlg = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth)
{
Time chosenDate = new Time();
chosenDate.set(dayOfMonth, monthOfYear, year);
long dtDob = chosenDate.toMillis(true);
CharSequence strDate = DateFormat.format("MMMM dd, yyyy", dtDob);
Toast.makeText(ForecastingActivity.this,
"Date picked: " + strDate, Toast.LENGTH_SHORT).show();
datebox.setText(strDate);
}}, 2012,0, 1);
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
将您的OnTouchListener
更改为OnClickListener
或类似。对于任何类型的触摸事件,都会调用onTouch()
- 方法,即:
如果您点击该视图,您将进入onTouch()
并发送一个故障事件,
然后,如果你发生了移动你的手指,你将通过移动动作进入onTouch()
,
最后你抬起手指再次获得onTouch()
,这次是一次事件。
另一方面,OnClickListener
只运行一次,如果单击视图。
答案 1 :(得分:1)
试试这个,让我知道发生了什么......
datebox.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if((arg1.getAction() == MotionEvent.ACTION_DOWN))
{
timedatedialog(false);
}
return false;
}});
或者只需更改EditText的onClickListener()
方法..