在Activity中获取Fragment实例

5
我已经将Fragment添加到Activity中,如下所示:
getSupportFragmentManager().beginTransaction()
                    .add(R.id.container,new MyFragment).commit();

其中containerFrameLayout的ID。

 <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

现在我该如何在Activity中获取Fragment的实例,类似于这样的用法?

我需要在从Fragment B获得结果后调用Fragment A的方法。

我在Fragment B中创建了一个接口,并在Activity中实现它。现在我需要将结果传递给Fragment A,但是我无法获取到Fragment A的实例。

我不想在Activity中创建私有实例的Fragment A并调用它的方法。


你可以将那个方法设为静态的。 - Vivek Mishra
为什么想要获取 Fragment 实例?最好创建一个接口,在 Activity 中覆盖方法并从 Fragment 中调用它。这样可以将 Fragment A 的所有数据传递到您的 Activity。 - M D
使用以下代码:getActivity().getSupportFragmentManager().beginTransaction() .add(R.id.container,new MyFragment).commit(); - Jigar
使用FragmentTransaction的add(int containerViewId, Fragment fragment, String tag)方法和FragmentManager的findFragmentByTag(String)方法。 - random
2个回答

17

试试这个

getSupportFragmentManager().beginTransaction()
                .add(R.id.container,new MyFragment(),"MyFragment").commit();

获取片段的方法

MyFragment frag = ((MyFragment) getSupportFragmentManager().findFragmentByTag("MyFragment"));

0

根据链接

所有片段之间的通信都通过相关联的活动完成。两个片段不应直接通信。

因此,我建议:

  1. Fragment B中定义一个interface
  2. activity中实现interface
  3. 最后将消息传递给Fragment A

代码示例和参考资料。


第三步不是从第一步和第二步中得出的。 - Joe Lapp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接