大佬教程收集整理的这篇文章主要介绍了android – 从DialogFragment打开片段(替换Dialogs父级),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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的回调方法:
@Override public void onClick(DialogInterface dialog,int which) { switch(which) { case DialogInterface.bUTTON_NEUTRAL: detailsCallBACks.openMoreDetails(); break; } }
最后我的Activity的openMoreDetails()方法如下所示:
@Override public 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.
它有可能吗?我的做法有什么不对?
我最初的实施出了什么问题:
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父级)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。