【发布时间】:2017-07-25 15:39:35
【问题描述】:
我正在使用一个数组来存储我的片段,如下所示:
fragmentList = new Fragment[]{
new FragmentA(),
new FragmentB(),
new FragmentC(),
...
};
稍后它们将被插入到滚动视图中。 碎片的数量没有改变,但 顺序可以改变。 我想要的是始终从数组中的第一个片段调用公共方法。
我尝试了类似的方法,但出现语法错误。
((fragmentList[0])fragmentManager.findFragmentById(R.id.fragmentA)).publicMethod();
如何从第一个 Fragment 调用公共方法?
编辑:
我尝试为新的 Fragment 设置一个 Tag,然后调用接口方法。 这就是我尝试替换和设置标签的方式。
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
for (int arrayIndex=0, fragmentNumber=1; fragmentNumber <= numberOfFragments; arrayIndex++, fragmentNumber++){
fragmentTransaction.replace(r.getIdentifier("fragment" + fragmentNumber, "id", packageName), fragmentList[arrayIndex]);
fragmentTransaction.add(fragmentList[arrayIndex],"fragment"+fragmentNumber);
}
((Unfold)fragmentManager.findFragmentByTag("fragment1")).unfold();
fragmentTransaction.commit();
但是在线((Unfold)fragmentManager.findFragmentByTag("fragment1")).unfold();
我收到错误:Attempt to invoke interface method 'void MyApp.Unfold.unfold()' on a null object reference
我认为标签设置不正确?
【问题讨论】: