0

我陷入了这个问题。

我想从我的父 FragmentActivity 调用 Abc 片段的方法,该方法动态地处理来自 FrameLayout 的片段。现在 Activity 有一个广播接收器,它监听来自服务的更新。即使 Abc 片段当前不是显示的片段,活动也可以在任何时候接收广播。现在,如果我使用 fragmentManager().findFragmentById(id) 找到一个片段,其中 id==id 的 framelayout ,我不能简单地将其转换为 Abc 片段,因为如果它不是当前显示的片段,则会出错。现在我怎么知道 Abc 当前已显示,以便我可以将更新传递给它。我无法在 Abc 本身内部实现更新接收,因为 Activity 需要将更新用于其他目的。

4

1 回答 1

2

您可以在创建片段时为其设置标签

Fragment fragment = new MyFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_host, fragment,"FragmentTag");
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack("");
ft.commit();

并以这种方式搜索

Fragment frag = (Fragment) getFragmentManager().findFragmentByTag("FragmentTag");
于 2012-09-21T14:29:10.830 回答