2012-04-11 12 views
0

Edittextでアンドロイド画面を実装しました。ユーザーがこのEditTextをタッチすると、datepickerダイアログが表示されます。これはうまくいきましたが、私の問題は、ユーザーがEditTextをタッチすると、2つのdatepickerダイアログが現れていることです。私はただ一つしか現れないようにしたい。Android EditText&Dialogbox

誰かがこの問題に遭遇したのか、それとも私だけですか?はいの場合は、解決策はありますか?私はしかし、何も見つからなかった、それをGoogle'd:/

コードにつきましては、これは私が持っているものです。

 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

はonTouch()メソッドから真への復帰を変更してみてください。このドキュメントを見てくださいhttp://developer.android.com/reference/android/view/View.OnTouchListener.html#onTouch%28android.view.View.%20android.view.MotionEvent%29 – Phani

+0

nopが動作しませんでした: – progdoc

+0

次に、コードをデバッグしてonTouch()メソッドが異なるイベントタイプで2回呼び出されているかどうかを確認します。はいの場合は、1つの操作に対してのみ実行してください。 – Phani

答えて

1

OnTouchListenerOnClickListenerなどに変更してください。 onTouch() -methodはすなわち、タッチイベントのあらゆる種類のために呼び出されます:
ビューをクリックした場合、あなたはあなたの指を動かし、あなたがonTouch()になりますわずかに起こるならば、ダウンイベントでonTouch()に行く
となります の移動アクションで、最後に指を持ち上げてonTouch()をもう一度入手してください。今回はアップイベントが発生します。

OnClickListenerは、ビューをクリックすると1回だけ実行されます。

+0

ありがとうございました! – progdoc

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()方法を変更が起こるか知ってみましょう。..

+1

そのACTION_DOWN .. – user370305