[英]Android fragment state using navigation drawer
我正在創建一個將從Windows Phone 8移植到android的應用程序。 我對android開發的知識是有限的。
我正在使用導航抽屜。 我已經完成了一些實現,我面臨的問題是在它們之間切換時恢復視圖狀態。
我正在使用arcgis android sdk。 視圖1:從互聯網獲取的列表視圖中的地理空間數據。 視圖2:顯示視圖和在視圖1中選擇(點按)的位置的地圖。視圖3:用於增加或減小半徑以從視圖1提取項目的設置視圖。
在視圖之間切換時,我希望視圖保持其狀態(還原狀態)。
在這種情況下,最佳做法是什么? 現在我正在使用片段。 問題是,在切換片段時,onSaveInstanceState沒有被調用。
這是我切換片段的代碼,它根本無法很好地工作:)
private void selectItem(int position) {
// Create a new fragment and specify the planet to show based on position
Fragment f;
FragmentTransaction ft = fragManager.beginTransaction();
switch(position) {
case 0:
if((f = fragManager.findFragmentByTag("home")) == null) {
f = Fragment.instantiate(this, HomeFragment.class.getName());
f.setRetainInstance(true);
ft.add(R.id.content_frame, f, "home");
} else {
ft.attach(f);
}
break;
case 1:
if((f = fragManager.findFragmentByTag("map")) == null) {
f = Fragment.instantiate(this, MapFragment.class.getName());
f.setRetainInstance(true);
ft.add(R.id.content_frame, f, "map");
} else {
ft.attach(f);
}
break;
case 2:
if((f = fragManager.findFragmentByTag("settings")) == null) {
f = Fragment.instantiate(this, SettingsFragment.class.getName());
f.setRetainInstance(true);
ft.add(R.id.content_frame, f, "settings");
} else {
ft.attach(f);
}
break;
}
ft.commit();
// Highlight the selected item, update the title, and close the drawer
mDrawerList.setItemChecked(position, true);
setTitle(tabs[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
這是還原片段狀態的示例代碼:
public void addFragments(Fragment fragment,
boolean addToBackStack, String tag) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
if (addToBackStack) {
ft.addToBackStack(tag);
}
ft.replace(R.id.content_frame, fragment);
ft.commit();
}
片段=您要替換的片段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.