我一直在努力,我後來通過訪問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,我會建議這種方法,如果它適合您的應用程序。這將防止在大多數情況下直接訪問標籤。
謝謝你的快速回答。 是的,我需要的片段是平等的。 因爲它們顯示不同的信息,但具有相同的格式。 我會試一試你的建議 –