2012-08-03 35 views
1

我会使用TimePickerFragment来设置一个时间,它可以正常工作。在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"); 

} 

总结一下:想赶上点击取消按钮事件以执行操作。

谢谢。

+0

你试图从父视图中捕获这个片段的事件吗?或者你抓住片段内的事件? – 2012-08-03 03:41:22

+0

这是我的活动,它延伸FragmentActivity – 2012-08-03 08:04:02

+1

我认为,如果你想赶上点击父'活动'中的'按钮'(你的'TimePickerFragment'将被附加到'活动'),你有在'TimePickerFragment'内创建'interface',那么你必须在你的父亲活动中实现'interface'。 – 2012-08-03 09:24:09

回答

1

这里是解决方案,底座上的覆盖件事:

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然后执行该功能。感谢大家。

1

您可以重写onCancel方法来做到这一点。

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

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