Activity 加载数据两次

Activity loads data twice

有一个 Activity - 叫做 MainActivity。有一个 xml - 叫做 activity_main。它包含菜单布局和游戏布局。

菜单布局 - 包含一个 "Start Match" Button

游戏布局 - 包含一个 Listview 和 4 String 个项目(4 个单词...)和一个 "Done" Button

应用启动时,菜单布局可见,游戏布局隐藏。单击 "Start Game" Button 时,隐藏菜单布局并显示游戏布局。单击 "Done" Button 时,将显示菜单布局并隐藏游戏布局。

问题: 当我点击"Done" Button后开始新游戏时,之前的游戏数据被加载到当前游戏中:

Listview 有 8 个项目,而不是 4 个。

我认为它与 onSaveInstanceState 有关:onDestroy() 从未被调用,所以当我第二次单击 "Start Match" 时,它会加载上一个游戏的状态。

此外,onResume() 在第二次单击 "Start Match" 后被调用,因此 onCreate()onStart() 再也不会被调用 - 除非我退出应用程序并再次启动.

我不确定如何解决这个问题。我尝试将 onSaveInstanceState 设置为 null 但这没有帮助:

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    if(newMatch)
        outState=null;
    Log.d(TAG, "onSaveInstanceState(): onSaveInstanceState called");
}

有人可以帮忙吗?

如果我需要提供更多代码或信息,请告诉我。

你为什么不写 2 个 class 而不是一个?

  • 一个 class 用于菜单,只有一种布局
  • 游戏本身的第二个

通过这些,您可以确保游戏的值始终以相同的方式加载,而不会受到之前游戏的影响。