Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android timePickerFragment上的侦听器打开取消按钮?_Android_Listener - Fatal编程技术网

Android timePickerFragment上的侦听器打开取消按钮?

Android timePickerFragment上的侦听器打开取消按钮?,android,listener,Android,Listener,我会使用一个TimePickerFragment来设置一个时间,它工作得很好 我只想在用户单击“取消”按钮时执行一个操作 不幸的是,到目前为止我还没有找到如何做到这一点 这是我的密码: 创建对话框: public void changeTime(int position) { df = new TimePickerFragment(); df.setActivity(activity); df.show(getSupportFragmentManager(), "time

我会使用一个TimePickerFragment来设置一个时间,它工作得很好

我只想在用户单击“取消”按钮时执行一个操作

不幸的是,到目前为止我还没有找到如何做到这一点

这是我的密码:

创建对话框:

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

    positionItemTime = position;

}
当用户单击“设置”时执行操作:

public void设置时间(整数小时,整数分钟){
visibleCursorNotes.moveToPosition(位置项时间);
int-idSelectedRow=visibleCursorNotes.getInt(visibleCursorNotes.getColumnIndex(“\u-id”);
字符串内容=visibleCursorNotes.getString(visibleCursorNotes.getColumnIndex(“内容注释”);
字符串minuteString=“”;
字符串hourodaystring=“”;
minuteString=“”+分钟;
hourOfDayString=“”+hourOfDay;
如果(分钟<10){
minuteString=“0”+minuteString;
}
如果(小时/天<10){
hourOfDayString=“0”+hourOfDayString;
}
字符串时间=”“+hourOfDayString+”:“+minuteString;
if(content.equals(“”){
content=“添加注释…”;
}
nds.updateNote(idSelectedRow、content、time);
visibleCursorNotes=nds.GetCursorUpdatedDatabaseForDate(visibleDate);
更新数据();
visibleListView.setSelection(位置项时间);
活动。管理声音(“写笔记”);
}
摘要:要捕获单击取消按钮事件以执行操作


谢谢。

您可以覆盖onCancel方法来实现这一点

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

   // do your action. you can have your own listener which will can be called.
}

以下是基于覆盖的解决方案:

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,然后实现函数。谢谢大家。

您是否试图从父视图中捕捉此片段的事件?或者您捕获片段内的事件?这是在扩展片段活动的“我的活动”中我认为,如果您想捕获父
活动中的
按钮
(您的
TimePickerFragment
将附加到的
活动
)的事件,您必须在
TimePickerFragment
内创建
接口
,然后必须
在父活动中实现
接口
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");
    }
}