Hyp*_*noZ 2 android android-dialogfragment
我有一个DialogFragment用于TimePickerDialog在按下a时显示 a button,我想将按钮的文本更改为新的时间设置。
我的问题是我不能叫setOnDismissListener上DialogFragment从我的Activity。
这是我的 DialogDragment
public class TimePickerFragment extends DialogFragment
implements TimePickerDialog.OnTimeSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
int hour = Application.getSettings().getInt("hour", 11);
int minute = Application.getSettings().getInt("minute", 11);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
FirstTimeLaunchSettingsActivity.hours = hourOfDay;
FirstTimeLaunchSettingsActivity.minutes = minute;
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我如何称呼这个 DialogFragment
public void showTimePickerDialog(View v) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(this.getFragmentManager(), "timePicker");
}
Run Code Online (Sandbox Code Playgroud)
我已经想制造Handler我activity这会refresh在Activity每Seconde系列,但是这不是我想怎么解决这个问题。
我只是想,当我关闭我的DialogFragment按钮时,我的按钮被设置为我输入的时间。
谢谢你的帮助。
您可以覆盖该onDismiss(DialogInterface dialog)方法,该方法将在DialogFragment解除时调用。您还可以使用内联覆盖从您的活动中执行此操作:
public void showTimePickerDialog(View v) {
DialogFragment newFragment = new TimePickerFragment() {
@Override
public void onDismiss(DialogInterface dialog){
// Add your code here
}
};
newFragment.show(this.getFragmentManager(), "timePicker");
}
Run Code Online (Sandbox Code Playgroud)
这是setOnDismissListener()对话片段的另一种方法
FragmentManager fm = getFragmentManager();
YourDialogFragment dialog = new YourDialogFragment();
dialog.show(fm,"Dialog Name");
fm.executePendingTransactions();
dialog.getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
//action when dialog is dismissed goes here
}
});
Run Code Online (Sandbox Code Playgroud)
确保已执行 FragmentTransaction 工作。我们需要打电话
fm.executePendingTransactions();
Run Code Online (Sandbox Code Playgroud)
否则NullPointerException调用时可能会发生setOnDismissListener()。
| 归档时间: |
|
| 查看次数: |
5659 次 |
| 最近记录: |