0

Edittext を使用して Android 画面を実装しました。ユーザーがこの EditText に触れると、datepicker ダイアログが表示されます。これはすべて正常に機能しましたが、私の問題は、ユーザーが EditText に触れると、2 つの日付ピッカー ダイアログが表示されることです。一人だけ登場させたい。

誰かがこの問題に遭遇したのだろうか、それとも私だけですか? はいの場合、解決策はありますか?私はそれをグーグルで検索しましたが、何も見つかりませんでした:/

コードに関しては、これは私が持っているものです:

        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 のメソッドに変更するだけです。

于 2012-04-11T12:35:46.737 に答える