1

TimePickerFragmentを使用して時間を設定すると、完全に機能します。

ユーザーが「キャンセル」ボタンをクリックしたときにアクションを実行したいのですが。

残念ながら、私は今のところそれを行う方法を見つけられませんでした。

これが私のコードです:

ダイアログを作成します:

public void changeTime(int position) {
    df = new TimePickerFragment();
    df.setActivity(activity);
    df.show(getSupportFragmentManager(), "timePicker");

    positionItemTime = position;

}

ユーザーが「設定」をクリックしたときにアクションを実行します。

public void setTime(int hourOfDay, int minute) {

    visibleCursorNotes.moveToPosition(positionItemTime);

    int idSelectedRow = visibleCursorNotes.getInt(visibleCursorNotes.getColumnIndex("_id"));

    String content = visibleCursorNotes.getString(visibleCursorNotes.getColumnIndex("content_note"));

    String minuteString = "";
    String hourOfDayString = "";

    minuteString =  "" + minute;
    hourOfDayString = "" + hourOfDay;

    if (minute < 10){
        minuteString = "0" + minuteString;
    }

    if (hourOfDay < 10){
        hourOfDayString = "0" + hourOfDayString;
    }

    String time = "" + hourOfDayString + ":" + minuteString ;

    if (content.equals("")){
        content = "add note ...";
    }

    nds.updateNote(idSelectedRow, content, time);

    visibleCursorNotes = nds.getCursorUpdatedDatabaseForADate(visibleDate);
    updateData();

    visibleListView.setSelection(positionItemTime);

    activity.managerOfSound("write note");

}

要約:アクションを実行するためにクリックキャンセルボタンイベントをキャッチしたい。

ありがとう。

4

2 に答える 2

2

これが解決策であり、オーバーライドのものに基づいています:

public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener,
TimePickerDialog.OnDismissListener{

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current time as the default values for the picker
        final Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);

        // Create a new instance of TimePickerDialog and return it
        return new TimePickerDialog(getActivity(), this, hour, minute,
                DateFormat.is24HourFormat(getActivity()));
    }


    public void onDismiss(DialogInterface dialog){

        System.out.println("oui c'est très bon !");

    }

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // Do something with the time chosen by the user
        System.out.println("voila");
    }
}

トリックの主な部分は、TimePickerDialog.OnDismissListenerを実装してから、関数を実装することです。みんな、ありがとう。

于 2012-08-03T09:05:18.997 に答える
1

これを行うには、onCancelメソッドをオーバーライドできます。

@Override
public void onCancel(DialogInterface dialog)
{
   super.onCancel(); 

   // do your action. you can have your own listener which will can be called.
}
于 2012-08-03T04:37:56.567 に答える