2011-12-05 40 views
3

我使用多個textview與onclick監聽器,指示我到TimePicker對話框。TimePicker對話框

但是我似乎無法知道如何閱讀教程後寫的代碼,

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,我應該如何編寫代碼?

答案很簡單,但我缺乏面向對象的知識並仍在學習。 謝謝...

回答

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 類繼承dialoge,我不能說showdialoge(0); – AMH

+0

@AHM:你爲什麼需要從Adapter類打開對話框?您可以通過獲取列表項的相關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

創建一個成員變量(比如int whichViewClicked = 0)在你的類來跟蹤的TextView的點擊帶來行動的時間選擇器。

現在,如果您單擊textview1設置whichViewClickClicked = 1,如果textview2被單擊設置whichViewClickClicked = 2等等。在onTimeSet()方法中,檢查哪個ViewClickClick的值並相應地設置textview文本

相關問題