Android 如何侦听DialogFragment事件
我已经实现了一个自定义的DialogFragment,我正在postReviewFragment中的RatingBar rating listener事件中显示它,我想在用户取消对话框时将RatingBar rating设置回0 正在搜索,因此我遇到了这些线索,但解决方案似乎不适合我: 到目前为止,我使用上述线程进行了尝试: 在postReviewFragment上实现DialogInterface.OnDismissListener,并重写Android 如何侦听DialogFragment事件,android,android-dialogfragment,Android,Android Dialogfragment,我已经实现了一个自定义的DialogFragment,我正在postReviewFragment中的RatingBar rating listener事件中显示它,我想在用户取消对话框时将RatingBar rating设置回0 正在搜索,因此我遇到了这些线索,但解决方案似乎不适合我: 到目前为止,我使用上述线程进行了尝试: 在postReviewFragment上实现DialogInterface.OnDismissListener,并重写onDismiss()方法 @Overri
onDismiss()
方法
@Override
public void onDismiss(final DialogInterface dialog) {
userRating.setRating(0);
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
final Fragment parentFragment = getParentFragment();
if (parentFragment instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) parentFragment).onDismiss(dialog);
}
}
在DialogFragment中,我还跳过了onDismiss()
方法
@Override
public void onDismiss(final DialogInterface dialog) {
userRating.setRating(0);
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
final Fragment parentFragment = getParentFragment();
if (parentFragment instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) parentFragment).onDismiss(dialog);
}
}
但是当dialogFragment被解除时,onDismiss()
方法仍然没有启动,我做错了什么?使用可用的方法
好的,我设法弄明白了:
DialogInterface.OnDismissListener
并重写了onDismiss()方法android.support.v4.app.FragmentManager fm = getActivity().getSupportFragmentManager();
PostReviewDialogFragment dialog = new PostReviewDialogFragment();
// optionally pass arguments to the dialog fragment
Bundle args = new Bundle();
args.putInt("usersRating", rating);
dialog.setArguments(args);
dialog.setTargetFragment(RestaurantReviewFragment.this,REVIEW_FRAGMENT);
dialog.show(fm, TAG);
onDismiss()
方法中,我将评级设置为0,并将其添加到一个额外的意图中,并将dialogFragment中的评级栏设置为用户选择的值
Intent i = new Intent()
.putExtra("rating1", rating);
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, i);
参考资料:这是危险的,因为它会覆盖对话侦听器