我正在使用viewpager並編譯API 23.我在下面的語句的代碼中顯示了一個編譯錯誤,但是該項目沒有編譯。getSupportFragmentManager()。getFragments()已棄用?
List<Fragment> fragments = getSupportFragmentManager().getFragments();
此外,我無法在Android文檔中找到支持片段管理器和非支持片段管理器的此方法。有人知道這裏發生了什麼嗎?
我正在使用viewpager並編譯API 23.我在下面的語句的代碼中顯示了一個編譯錯誤,但是該項目沒有編譯。getSupportFragmentManager()。getFragments()已棄用?
List<Fragment> fragments = getSupportFragmentManager().getFragments();
此外,我無法在Android文檔中找到支持片段管理器和非支持片段管理器的此方法。有人知道這裏發生了什麼嗎?
其實我這樣做是爲了讓所有片段的引用:
private List<WeakReference<Fragment>> mFragList = new ArrayList<WeakReference<Fragment>>();
@Override
public void onAttachFragment (Fragment fragment) {
mFragList.add(new WeakReference(fragment));
}
public List<Fragment> getActiveFragments() {
ArrayList<Fragment> ret = new ArrayList<Fragment>();
for(WeakReference<Fragment> ref : mFragList) {
Fragment f = ref.get();
if(f != null) {
if(f.isVisible()) {
ret.add(f);
}
}
}
return ret;
}
public Fragment findFragement(String tClass) {
List<Fragment> fragments = getActiveFragments();
for (Fragment fragment : fragments) {
if (tClass.equalsIgnoreCase("Home")) {
if (fragment instanceof ToggleFragment) {
return fragment;
}
} else if (tClass.equalsIgnoreCase("Contacts")) {
if (fragment instanceof ContactFragment) {
return fragment;
}
}
}
return null;
}
非常感謝! !而且,如果你能解釋getactivefragments做什麼,這將是真棒 –
也:@覆蓋 公共無效onAttachFragment(片段片段){ mFragList.add(新的WeakReference(片段));} 母艦一樣導致重複當重新創建一個屏幕或使用ft.replace()時 –
@MarissaNicholas當屏幕被重新創建時(例如在旋轉時),我認爲它不會創建重複的內容,也許在ft.replace()。 –
邁克爾的回答第一個評論說,這一切... http://stackoverflow.com/questions/6102007/is-there -a-way-to-get-references-for-all-currently-active-fragments-in-an-activi'我們不應該使用這種方法。它用@hide標記,不應該包含在支持庫jar中。它不應該被視爲導出的API的一部分.'因爲它隱藏**,我猜Google最終決定刪除這個方法。 –
你使用導入android.support.v4.app.Fragment ;? – sonnv1368
從支持庫版本24.1.1開始,該方法尚未被棄用。什麼是顯示的錯誤? –