1

さまざまなボタンから呼び出すことができるtimePickerダイアログがあります。ダイアログの呼び出し元のIDを渡すにはどうすればよいですか?

これは関連するコードです:

    //Time picker
    private int pHour;
    private int pMinute;
    static final int TIME_DIALOG_ID = 0;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        /** Get the current time */
        final Calendar cal = Calendar.getInstance();
        pHour = cal.get(Calendar.HOUR_OF_DAY);
        pMinute = cal.get(Calendar.MINUTE);
}

ボタンからのクリックイベント:

public void onClick(View v) {

 // Here I should pass the v.getId() to the dialog
 showDialog(TIME_DIALOG_ID);
}

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case TIME_DIALOG_ID:
        return new TimePickerDialog(this,
                mTimeSetListener, pHour, pMinute, false);
    }
    return null;
}

/** Callback received when the user "picks" a time in the dialog */
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
    new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            pHour = hourOfDay;
            pMinute = minute;
            //Here I should know from which v.getId() the dialog was called
        }
    };

ありがとう!

4

1 に答える 1

1

あなたはあなたがしたいことのためにあなた自身のピッカーを書かなければならないでしょう:

すべてのボタンに対して同じピッカーを呼び出す必要があると仮定して、 'sのswitchステートメントを使用することをお勧めします。Button

 public void onClick(View v) {

  switch(v.getId()){

  case R.id.Button1:
       showDialog(TIME_DIALOG_ID);
       break;

  case R.id.Button2: 
       showDialog(TIME_DIALOG_ID);
       break;
  }
}

別のIDをポップアップさDialogせたい場合は、別のIDを使用できます。Dialog

于 2012-05-20T13:24:47.413 に答える