gpt4 book ai didi

android - 从 DialogFragment 打开 fragment (替换 Dialogs 父级)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:47:54 26 4
gpt4 key购买 nike

假设我有 fragment 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");

在此对话框中,单击(正/中/负)按钮后,我想打开 Fragment B,它应该替换 Fragment 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();
}

我得到的很奇怪。 fragment B 在屏幕上闪烁几分之一秒,然后再次被 fragment A 替换(覆盖?)。

当我单击“向上”按钮时,我从 fragment A 返回,因此这些事务都没有添加到返回堆栈。我想显示 fragment B,然后在按下“向上”按钮时返回到 fragment A。

这有可能吗?我的方法有什么问题?

最佳答案

刚遇到同样的问题:

fragment A 显示自定义对话框 fragment 。

在单击对话框 fragment 的其中一个按钮时,我想删除对话框并显示 fragment B。

fragment B被显示后立即消失。我的屏幕再次显示 fragment 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 打开 fragment (替换 Dialogs 父级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14650298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com