android – 从DialogFragment打开片段(替换Dialogs父级)

android – 从DialogFragment打开片段(替换Dialogs父级),第1张

概述假设我有片段A,我从中打开一个DialogFragment: FragmentActivity fragmentActivity = (FragmentActivity) view.getContext();FragmentTransaction ft = fragmentActivity.getSupportFragmentManager().beginTransaction();Fragm 假设我有片段A,我从中打开一个DialogFragment:

FragmentActivity fragmentActivity = (FragmentActivity) vIEw.getContext();FragmentTransaction ft = fragmentActivity.getSupportFragmentManager().beginTransaction();Fragment prev = fragmentActivity.getSupportFragmentManager().findFragmentByTag("dialog");if (prev != null) {  ft.remove(prev);}ft.addToBackStack(null);DialogFragment fragmentDialog = MyDialogFragment.newInstance();fragmentDialog.show(ft,"dialog");

在此对话框中,单击(正/中/负)按钮后,我想打开片段B,它应该替换片段A.

在Dialog的onClick方法中,我运行父Activity的回调方法:

@OverrIDepublic voID onClick(DialogInterface dialog,int which) {  switch(which) {    case DialogInterface.button_NEUTRAL:      detailsCallbacks.openMoreDetails();       break;  }}

最后我的Activity的openMoreDetails()方法如下所示:

@OverrIDepublic voID openMoreDetails() {  Fragment fragmentB = Fragment.newInstance();  FragmentTransaction ft = getSupportFragmentManager().beginTransaction();  ft.replace(R.ID.fragment_container,fragmentB);  ft.addToBackStack(null);  ft.commit();}

我得到的是奇怪的.片段B在屏幕上闪烁仅几秒钟,然后再次被片段A替换(覆盖?).

当我点击向上按钮时,我甚至从片段A返回,因此这些事务中没有添加到后栈.我想显示片段B,然后按下按钮返回片段A.

它有可能吗?我的做法有什么不对?

解决方法 刚遇到同样的问题:

片段A显示自定义对话框片段.

单击对话框片段的其中一个按钮,我想删除对话框并显示片段B.

片段B显示并立即消失.我的屏幕再次显示片段A.

我最初的实施出了什么问题:

private voID onClickInscription() {    FragmentInscription frag = FragmentInscription.newInstance();    FragmentTransaction ft = getFragmentManager().beginTransaction();    ft.replace(R.ID.main,frag);    ft.addToBackStack(null);    ft.commit();    dismiss();}

而正确的一个:

private voID onClickInscription() {    dismiss();    FragmentInscription frag = FragmentInscription.newInstance();    FragmentTransaction ft = getFragmentManager().beginTransaction();    ft.replace(R.ID.main,frag);    ft.addToBackStack(null);    ft.commit();}

因此,尝试先在对话框中调用dismiss,然后应用FragmentTransction

总结

以上是内存溢出为你收集整理的android – 从DialogFragment打开片段(替换Dialogs父级)全部内容,希望文章能够帮你解决android – 从DialogFragment打开片段(替换Dialogs父级)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1127396.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存