从Activity调用动态片段的方法

时间:2012-09-21 14:20:34

标签: android android-fragments broadcastreceiver

我遇到了这个问题。

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

1 个答案:

答案 0 :(得分: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");