Android EditText&对话框

时间:2012-04-11 12:29:34

标签: java android datepicker textview android-edittext

我用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);

非常感谢任何帮助。谢谢!

2 个答案:

答案 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()方法..