我正在创建一个我从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);
}
答案 0 :(得分:0)
以下是恢复片段状态的示例代码:
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();
}
此处片段=您想要替换的片段。