gpt4 book ai didi

Android fragment 实例避免重复

转载 作者:太空狗 更新时间:2023-10-29 13:33:12 25 4
gpt4 key购买 nike

您好,我不确定我做的是否正确。我在一项 Activity 中有几个 fragment (未同时显示)。当我添加 fragment 时,我是否必须检查以前的实例是否存在?我正在使用兼容包,我的 fragment CameraFragment 是一个单独的类(在它自己的文件中):

private void addNewFragment(Fragment fragment, String tag) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.frag1, fragment, tag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}

然后:

public void startPicTaking() {

addNewFragment(CameraFragment.newInstance(), TAG_PIC_TAKING);

}

因此,每次用户单击按钮拍照时,我都会使用此方法,但我应该验证 fragment 是否已存在并先将其删除,还是静态方法 newInstance 确保 fragment 不重复?

我已多次阅读该文档,但我不明白为什么该行:ft.addToBackStack(空);它是做什么用的?我知道您可以弹出返回堆栈并保留事务,但如何使用它以及用于什么?是否有必要,或者如果我不使用它我可以跳过它?

谢谢

最佳答案

I have several fragments in one activity (not shown at the same time). When I add the fragment do I have to check if a previous instance exists?

不,它只会在添加它的下一个实例时创建该 Fragment 的一个新实例。它不会影响它之前的实例。

So each time a user clicks a button to take a picture I use this methods BUT shall I verify if the fragment already exists and remove it first or does the static method newInstance make sure the fragment is not duplicated?

如果您愿意,可以这样做,以确保没有 Fragment 在堆栈中出现两次。 (因此,当您回击时,您不会再次获得相同的 Activity 。)根据返回堆栈中出现的确切内容,您可能不想删除较低的内容。 (考虑到用户希望在他点击后退按钮时出现以前的 fragment 。)

I have read the doc several times but I don't understand why the line: ft.addToBackStack(null); what is it for?

Fragment 对象被添加到返回堆栈时,每次用户返回时,他们都会转到堆栈中的上一个项目。如果您不将项目添加到返回堆栈,则用户在点击返回按钮时不会遇到它。

关于Android fragment 实例避免重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13365343/

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