小编ChD*_*ers的帖子

Android FragmentTransaction提交什么时候?

我正在构建一个平板电脑应用 在这个应用程序中,有一个活动有两个片段.第一个片段是"已知"列表片段,它显示来自数据库查询的简单的一个项目布局列表,第二个片段显示有关所选记录的详细信息(来自列表片段).第二个片段的思考是它的类型取决于列表中显示的记录.例如,如果记录是客户,则显示所选客户的详细信息,如果它们是库存项目,则显示所选项目的详细信息等.为了与详细信息片段进行通信,我创建了一个每个详细信息片段类实现的接口.列表片段在布局xml的活动中"固定".然而,细节片段是在活动创建过程中创建的,如下所示:

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);

....
}
Run Code Online (Sandbox Code Playgroud)

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

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

所以问题是:我如何确定fragmentTransaction.commit()已经提交了事务,所以我可以使用添加的片段做一些工作?还有什么方法可以等到提交发生,然后继续其余的代码?

android android-fragments

46
推荐指数
2
解决办法
3万
查看次数

如何使上下文动作模式栏覆盖我的布局而不是"推"它

我为我的应用程序实现了自己的viewgroup.由于各种原因,使用操作栏不是一个选项,所以在我的视图组中,我有自己的"动作栏",一个在顶部,一个在底部.图1说明了我当前的布局.

图片1

正如您所看到的,布局中有两个edittexts,一切看起来都不错.

但是,当用户在任何edittexts中选择一些文本时,将显示上下文动作模式栏.图2说明了这一点.

图2

当发生这种情况时,actionmode bar会"按下"我的整个布局以获得它的空间.在平板电脑和其他大屏幕设备中,这是可以的,但在较小的设备中,尤其是软键盘可见时,剩余高度太小(横向不可用).

我想要做的是动作模式栏来覆盖我的布局而不是按下它,如图3所示.

图3

那可能吗?

android android-actionmode

39
推荐指数
2
解决办法
1万
查看次数