Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 从DialogFragment打开片段(替换Dialogs父级)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有片段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的回调方法

@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.

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

解决方法

刚遇到同样的问题:

片段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父级)所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。