【问题标题】:Master/Detail Flow Data gone after click on Back Button单击后退按钮后主/详细流数据消失
【发布时间】:2017-07-20 21:13:15
【问题描述】:

我通过单击放置在另一个活动 (UserActivity) 中的按钮来调用 android 中的 Master/Detail 活动。奇怪的是,如果我单击 Master/Detail 活动中的后退按钮,我会在 UserActivity 状态下丢失数据。它想再次执行 onCreate 方法。

如果我单击 LoginActivity 中的登录按钮,我被重定向到 UserActivitiy,然后我使用“智能手机”的后退按钮返回,我输入的用户名和密码仍然存在。所以我不会丢失数据。

智能手机的返回键和程序顶部的返回键有区别吗?我现在有点困惑,我知道如何保持 Activity 的状态。但我的问题是,为什么我一方面有这种行为,另一方面却没有。

【问题讨论】:

  • 请分享你的代码。您是否一直在使用包含DummyContent.java 文件和所有这些的模板?我最近第一次使用它,很遗憾在开始编程之前没有仔细查看代码。代码确实记录不足,您确实必须花时间弄清楚哪些数据在哪里传递,哪些被保留
  • 确实我使用了模板。我认为它完成了视图,因此我必须以某种方式保存数据。

标签: android android-activity master-detail


【解决方案1】:

以防万一你会留下这样的问题并且不要添加代码:

检查已经存在的物品数量可能会有所帮助。当我遇到这个问题时,onStart() 被调用得如此之快,以至于在我看来 Activity 已经丢失了数据。实际上它确实有数据,但是调用 onCreate/onStart (我在一个片段中)将它归零。

我为避免这种情况所做的是检查是否需要加载列表中的项目。如果有,它会调用一个包含旧的 onCreate/onStart 所做的方法。如果不需要加载数据,它会跳过这一步,在它的余生中愉快地与“旧”数据一起生活。

@Override
public void onStart() {
super.onStart();

    if(DummyContent.ITEMS.size()<3){
        initializeApp();
    }

}

void initializeApp(){
    videoTitles=new ArrayList<String>();
    videoUrls=new ArrayList<String>();
    . . .
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多