0

我已经实现了一个带有 Edittext 的 android 屏幕。当用户触摸此 EditText 时,会出现一个 datepickerdialog。这一切都很好,但是我的问题是当用户触摸 EditText 时,会出现两个 datepickerdialogs。我只想要一个出现。

我想知道是否有人遇到过这个问题,还是只有我一个?如果是,有什么解决办法吗?我用谷歌搜索了它,但什么也没找到:/

关于代码,这就是我所拥有的:

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

任何帮助深表感谢。谢谢!

4

2 回答 2

1

将您的更改OnTouchListenerOnClickListener或类似。任何类型的onTouch()触摸事件都会调用 - 方法,即:
如果您单击视图,您将进入onTouch()一个向下事件,
然后如果您碰巧移动手指,您将进入onTouch()一个移动动作,并且最后,您抬起手指,onTouch()再次获得,这次是向上事件。

OnClickListener另一方面,如果单击视图,则仅运行一次。

于 2012-04-11T12:35:39.703 回答
1

试试这个,让我知道会发生什么..

 datebox.setOnTouchListener(new OnTouchListener() 
    {
        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {
         if((arg1.getAction() == MotionEvent.ACTION_DOWN))
          {
            timedatedialog(false);
          }
            return false;
        }});

或者只是更改为onClickListener()您的 EditText 的 it 方法..

于 2012-04-11T12:35:46.737 回答