
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父级)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)