gpt4 book ai didi

android - FragmentManager 不删除动态添加的 fragment

转载 作者:行者123 更新时间:2023-11-30 01:03:21 24 4
gpt4 key购买 nike

我正在尝试在用户执行不同操作时动态地向/从我的 FragmentManager 添加/删除 DialogFragments。问题是 FragmentManager 没有正确删除所有这些。我正在调用 remove() 函数,所以我很好奇为什么这些 Fragments 没有被删除。我在网上搜索过,remove 方法是人们所说的从 FragmentManager 中删除 Fragments 的方法。

下面的示例代码展示了我在做什么:

            // originally added `LoginRestFragment` with TAG_LOGIN_REST_FRAGMENT tag to Fragment Manager
rest = new SettingsDialogFragment();
FragmentManager fm = getFragmentManager();
rest.setArguments(bundle);
Fragment fragment = fm.findFragmentByTag(TAG_LOGIN_REST_FRAGMENT);
Log.d("frag_type", fragment.toString());
fm.beginTransaction().remove(fragment).commit();
fragment = fm.findFragmentByTag(TAG_LOGIN_REST_FRAGMENT);
Log.d("is_frag_removed", fragment.toString());
// why does this return a Fragment type ^^ shouldn't it throw null errror?
Log.d("rest", rest.toString());
// ^ this shows rest has been updated from LoginRestFrament to SettingsDialogFragment
fm.beginTransaction().add(rest, TAG_LOGIN_REST_FRAGMENT).commit();
fragment = fm.findFragmentByTag(TAG_LOGIN_REST_FRAGMENT);
Log.d("frag_type", fragment.toString());
// why is this not SettingsDialogFragment??

显示所代表内容的日志语句。我应该注意到,屏幕上显示的不再是 LoginRestFragment,而是 SettingsDialogFragment(正如预期的那样),rest 是一个类变量。

D/frag_type: LoginRestFragment
D/is_frag_removed: LoginRestFragment
D/rest: SettingsDialogFragment
D/frag_type: LoginRestFragment

最佳答案

谢谢 DeeV!你说的是真的,这就是我如何找到解决这个问题的方法,这在 this 中得到了回答。 StackOverflow 条目。您基本上可以在 FragmentManager 上使用 executePendingTransactions() 来动态提交。

关于android - FragmentManager 不删除动态添加的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39171604/

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