【发布时间】:2012-03-08 01:34:11
【问题描述】:
我有一个管理大约四个片段的活动。活动决定何时添加/替换/隐藏/显示某些片段。当我的应用程序关闭(由于内存不足)然后由用户重新打开时,片段不会自动读取到片段管理器中。如何保存添加的片段,以便在重新启动应用程序时将用户带到他们之前所在的同一页面?
我假设使用 onSaveInstanceState() 但我不确定要保存什么...
谢谢
【问题讨论】:
标签: android android-fragments fragment
我有一个管理大约四个片段的活动。活动决定何时添加/替换/隐藏/显示某些片段。当我的应用程序关闭(由于内存不足)然后由用户重新打开时,片段不会自动读取到片段管理器中。如何保存添加的片段,以便在重新启动应用程序时将用户带到他们之前所在的同一页面?
我假设使用 onSaveInstanceState() 但我不确定要保存什么...
谢谢
【问题讨论】:
标签: android android-fragments fragment
我做的一件事是跟踪显示的屏幕为整数。 Activity 将持有一个以当前屏幕为值的私有 int。
private int currentScreen = -1;
private static final int SCREEN_MENU = 0;
private static final int SCREEN_PROFILE = 1;
private static final int SCREEN_HELP = 2;
private void switchToMenu(){
currentScreen = SCREEN_MENU;
//Load Fragment into frame.
}
private void switchToProfile(){
currentScreen = SCREEN_PROFILE;
//Load Fragment into frame.
}
private void switchToHelp(){
currentScreen = SCREEN_HELP;
//Load Fragment into frame.
}
@Override
public void onResume(){
switch(currentScreen){
case SCREEN_MENU: switchToMenu(); break;
case SCREEN_PROFILE: switchToProfile(); break;
case SCREEN_HELP: switchToHelp(); break;
}
}
此方法不会保存屏幕上的所有内容,因为我只想跟踪正在显示的当前页面,因此我只关心 currentScreen。但无论如何你应该有一个想法。
:)
【讨论】: