gpt4 book ai didi

android - fragment 切换 View 被重用?

转载 作者:行者123 更新时间:2023-11-29 01:42:24 25 4
gpt4 key购买 nike

我有一个带有 FrameLayout 的 Activity ,需要根据用户输入显示不同的 fragment 。

我用来显示 fragment 的代码是这样的:

private void showFragment(Fragment fragment, Bundle args, boolean addToBackStack) {

if (args != null) {
fragment.setArguments(args);
}

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

fragmentTransaction.setCustomAnimations(R.anim.activity_open_translate, R.anim.activity_close_scale);

fragmentTransaction.replace(R.id.main_frame, fragment);

if (addToBackStack) {
fragmentTransaction.addToBackStack(fragment.getClass().getName());
}
fragmentTransaction.commit();
}

这被称为:

if (contactPickFragment == null) {
contactPickFragment = new ContactPickFragment();
}
showFragment(contactPickFragment, args, true);

一切正常。现在,如果用户进入一个 fragment 并返回到同一个 fragment ,我在里面的所有 View 都保持不变。例如,我在 fragment 中有一个 EditText,用户在其中编辑了一些内容。如果用户返回到该 fragment ,相同的文本仍然存在。我不希望这种情况发生。如何重置 View 中的所有内容?

我在 Fragment 的 onCreateView() 中添加了代码以清除文本,从调试中我看到正在调用它,但文本从未被清除。我在这里做错了什么?

最佳答案

如果您不想显示前一个实例的数据,只需在每次显示它时创建一个新的 ContactPickFragment 实例即可。

onCreateView() 中清除数据无效,因为 View 状态在 onCreateView() 之后恢复。您的 Fragment 在 onCreateView() 之前没有 View ,因此 Android 不可能更早地应用之前的状态。在 onCreateView() 期间在 View 上设置的值将被它们之前的值覆盖。

关于android - fragment 切换 View 被重用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23676788/

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