2011-12-05 10 views
3

私は、TimePickerダイアログに私を導くonclickリスナーで複数のテキストビューを使用しています。TimePicker Dialog

しかし、私は、ダイアログを表示するには

textview1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      showDialog(TIME_DIALOG_ID); 
     } 
    }); 

    textview2.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      showDialog(TIME_DIALOG_ID); 
     } 
    }); 

、チュートリアルを読んだ後、コードを書く方法を知っているように見えることはできません。

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case TIME_DIALOG_ID: 
     return new TimePickerDialog(this, 
       mTimeSetListener, mHour, mMinute, true); 
    } 
    return null; 
} 

、今ようやく、

private TimePickerDialog.OnTimeSetListener mTimeSetListener = 
     new TimePickerDialog.OnTimeSetListener() { 
      @Override 
      public void onTimeSet(android.widget.TimePicker view, 
        int hourOfDay, int minute) { 
       mHour = hourOfDay; 
       mMinute = minute; 
      } 
     }; 

TimePickerDialog.OnTimeSetListenerコールバックの後にtimepickerを呼び出したtextviewの.setTextに、どのようにコードを書くべきですか?

答えはとてもシンプルですが、私はOOPの知識がなく、まだ学習しています。 ありがとう...

答えて

3

グローバル変数を使用する必要があります。たとえば、今String fromWhere="";

は、

textview1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       fromWhere="textview1"; 
       showDialog(TIME_DIALOG_ID); 
      } 
    }); 

    textview2.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       fromWhere="textview2"; 
       showDialog(TIME_DIALOG_ID); 
      } 
    }); 
    ... 
    private TimePickerDialog.OnTimeSetListener mTimeSetListener = 
      new TimePickerDialog.OnTimeSetListener() { 
       @Override 
       public void onTimeSet(android.widget.TimePicker view, 
         int hourOfDay, int minute) { 

        if(fromWhere.equals(textview1)) 
          // set hour and minute to according variable and textview 
        else if(fromWhere.equals(textview2)) 
          // set hour and minute to according variable and textview 
        .. //so on for others 
        //mHour = hourOfDay; 
        //mMinute = minute; 
        fromWhere=""; 
       } 
    }; 
+0

私は、アダプタにいるならば、私はArrayAdapter からクラスを継承を意味するもので、ダイアログボックスのを示すために、どのように、私が言うことができないshowdialoge(0); – AMH

+0

@AHM:なぜアダプタクラスからダイアログを開く必要がありますか?リスト項目の関連IDを取得することで、アクティビティ自体でそれを行うことができます(ArrayAdapterを使用してリストをレンダリングする場合)。 – Hiral

0

EditTextを使用して、編集テキストでpikkerを長押しすることができます。

EditText timeDisplay=(EditText)findViewById(R.id.timeDisplay); 

timeDisplay.setOnClickListener(new View.OnClickListener() 
{ 
    public void onClick(View v) { 

     showDialog(TIME_DIALOG_ID);  
    }  
}); 
1

のTextViewを追跡するために、あなたのクラスで(int whichViewClicked = 0言う)メンバ変数を作成して立ち上げに時間がピッカーをクリックしました。

textview1をクリックすると、whichViewClicked = 1が設定され、textview2がクリックされた場合、whichViewClicked = 2などが設定されます。 onTimeSet()メソッドでは、whichViewClickedの値を確認し、それに応じてテキストビューのテキストを設定します。