gpt4 book ai didi

Android FindFragmentByTag 在 FragmentTabHost 中返回 null

转载 作者:行者123 更新时间:2023-11-29 21:05:23 25 4
gpt4 key购买 nike

我正在尝试从我的 fragmentTabHost 中检索 fragment :

private void initView() {
FragmentTabHost mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

mTabHost.addTab(mTabHost.newTabSpec("summary").setIndicator("Summary"),
SummaryActivity.class, bundle);

SummaryActivity summaryActivity = (SummaryActivity) getSupportFragmentManager().findFragmentByTag("summary");
System.out.println(summaryActivity);
}

当我尝试在 fragment 创建后立即获取 fragment 时,它返回 null。这可能是线程问题。在这种情况下,我应该如何甚至何时调用 getFragmentByTag 来检索我的 fragment ?

最佳答案

您要查找的Fragment 不在堆栈中。在您找回它时,它甚至还没有添加/存在。

findFragmentByTag 方法将查找并匹配事务中添加的最后一个 fragment ,如果与所需 fragment 不匹配,则它将从历史记录中搜索可用列表。最后,如果您的标签不存在任何 fragment ,它将返回 null

确保您首先将 Fragment 添加到 View 中。

View 应该接收 fragment/tabhost 以使其在生命周期中可用。

在执行 findFragmentByTag 查找之前,您必须将 tabHost 返回到 View 以添加 fragment 。

例如:

你在你的 FragmentonCreateView 然后你应该在你膨胀它之后将 tabhost 返回到 View 。

onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mTabHost = new FragmentTabHost(getActivity());
mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.fragment1);

mTabHost.addTab(mTabHost.newTabSpec("fragmenttag").setIndicator("Fragmenttag"),
FragmentStackSupport.CountingFragment.class, null);

return mTabHost;
}

那么你的Fragment可能会在back stack中可用,你可以通过Tag取回它。

关于Android FindFragmentByTag 在 FragmentTabHost 中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24764506/

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