gpt4 book ai didi

Android FragmentTransaction 何时提交?

转载 作者:IT王子 更新时间:2023-10-28 23:49:46 26 4
gpt4 key购买 nike

我正在构建一个平板电脑应用。在这个应用程序中,有一个带有两个 fragment 的 Activity 。第一个 fragment 是“已知”列表 fragment ,它显示来自数据库查询的简单单项布局列表,第二个 fragment 显示有关所选记录的详细信息(来自列表 fragment )。第二个 fragment 的想法是它的类型取决于列表中显示的记录。例如,如果记录是客户,则显示所选客户的详细信息,如果它们是库存项目,则显示所选项目的详细信息等。为了与Details Fragment 通信,我创建了一个接口(interface),每个细节 fragment 类都实现了该接口(interface)。列表 fragment 在布局 xml 的 Activity 中“固定”。然而,细节 fragment 是在 Activity 创建期间创建的,如下所示:

super.onCreate(savedInstanceState);
setContentView(R.layout.act_hlpfiles_host);

...

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.laydetailsfragment, FragmentsPool.getHelperFileFragment(501), "recordDetails");
fragmentTransaction.commit();

myDetailsFragment = getFragmentManager().findFragmentByTag("recordDetails");

...

myListFragment = (frg_hlpfiles_lstrecords) getFragmentManager().findFragmentById(R.id.frg_lstrecords);

....
}

此代码的问题在于 myDetailsFragment 始终为空。这是因为 fragmentTransaction.commit() 不会立即运行,而是在下一次主线程准备好时发生在主线程上(如 android 文档所述)。

如果我在 onStart() 中创建详细信息 fragment 并在 onCreate 中实例化列表 fragment ,一切正常。

所以问题是:如何确定 fragmentTransaction.commit() 已提交事务,以便我可以对添加的 fragment 做一些工作?此外,有什么方法可以等到提交发生,然后继续执行其余代码?

最佳答案

在提交事务之后尝试运行 fragmentManager.executePendingTransactions(),然后再按标签查找,看看是否适合您。

关于Android FragmentTransaction 何时提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7246479/

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