【问题标题】:Fragment not readded on restart重新启动时未读取片段
【发布时间】:2012-03-08 01:34:11
【问题描述】:

我有一个管理大约四个片段的活动。活动决定何时添加/替换/隐藏/显示某些片段。当我的应用程序关闭(由于内存不足)然后由用户重新打开时,片段不会自动读取到片段管理器中。如何保存添加的片段,以便在重新启动应用程序时将用户带到他们之前所在的同一页面?

我假设使用 onSaveInstanceState() 但我不确定要保存什么...

谢谢

【问题讨论】:

    标签: android android-fragments fragment


    【解决方案1】:

    我做的一件事是跟踪显示的屏幕为整数。 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。但无论如何你应该有一个想法。

    :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      相关资源
      最近更新 更多