我一直在努力,我后来通过访问Adapter
获取标签,我从Activity
后面引用Fragment
的方式。
假设你使用Adapter
,你可以做这样的事情
private mTabsAdapter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// etc
this.mTabsAdapter = new TabsAdapter(this, this.mViewPager);
// Tab1
Tab tab = actionBar.newTab();
this.mTabsAdapter.addTab(tab, MyFragment1.class, null);
// Tab2
tab = actionBar.newTab();
this.mTabsAdapter.addTab(tab, MyFragment2.class, null);
}
public MyFragment1 getTab1() {
return (MyFragment1)this.mTabsAdapter.getItem(0);
}
public MyFragment2 getTab2() {
return (MyFragment2)this.mTabsAdapter.getItem(1);
}
那么你的片段里面,你就必须访问
public class MyFragment1 {
// ...
public void reloadData() {
// reload data here
}
}
的方法现在,您可以访问Fragment
如
this.getTab1.reloadData();
这感觉就像一个sad访问片段的方式,但不能依赖每个场景中的标签。另外,您必须注意仅在对Fragment
的引用存在的地方引用此处。
可能有时间,这将是null。举个例子,如果你有一堆标签,他们可能会在某个时候收集垃圾。您应该通过回调在Fragment
之间进行通信。此示例仅适用于少数情况。
回调方法描述在Communicating with the Activity,我会建议这种方法,如果它适合您的应用程序。这将防止在大多数情况下直接访问标签。
谢谢你的快速回答。 是的,我需要的片段是平等的。 因为它们显示不同的信息,但具有相同的格式。 我会试一试你的建议 –