Ram*_*hDR 5 android android-dialogfragment
我已经实现了一个自定义 DialogFragment,我将其显示在 postReviewFragment 中的 RatingBar 评级侦听器事件上,我想在用户关闭对话框时将我的 RatingBar 评级设置回 0。
搜索所以我遇到了这些线程,但解决方案似乎对我不起作用:
到目前为止我使用上述线程尝试过的内容:
实现DialogInterface.OnDismissListenerpostReviewFragment 和重写onDismiss()方法
@Override
public void onDismiss(final DialogInterface dialog) {
userRating.setRating(0);
}
Run Code Online (Sandbox Code Playgroud)
另外,在 DialogFragment 中我已经覆盖了该onDismiss()方法
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
final Fragment parentFragment = getParentFragment();
if (parentFragment instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) parentFragment).onDismiss(dialog);
}
}
Run Code Online (Sandbox Code Playgroud)
onDismiss()但当dialogFragment被解除时,该方法仍然没有启动,我做错了什么?
好吧,我设法弄清楚了:
首先,确保您已DialogInterface.OnDismissListener在 DialogFragment 和显示对话框的 Fragment 上实现并重写 onDismiss() 方法。
然后,当您显示 DialogFragment 设置目标片段时,这里我通过 Bundle 将评级传递给 DialogFragment
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);
Run Code Online (Sandbox Code Playgroud)在 DialogFraments 的onDismiss()方法中,我将评级设置为 0 并将其添加到意图附加中,并将dialogFragment 中的评级栏设置为用户选择的值。
Intent i = new Intent()
.putExtra("rating1", rating);
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, i);
Run Code Online (Sandbox Code Playgroud)然后,我重写onActivityResult()方法来读取值,并在关闭时将片段上的 ratingbar 值设置为 0。
这可能不是最好的方法,但它有效,如果我发现比此方法更好的方法,我将更新答案。如果我的解释不是很清楚,请抱歉,请查看下面的线程以获取更详细的解释。
参考文献: 如何将数据从DialogFragment发送到Fragment?
| 归档时间: |
|
| 查看次数: |
10225 次 |
| 最近记录: |