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 用于菜单,只有一种布局
- 游戏本身的第二个
通过这些,您可以确保游戏的值始终以相同的方式加载,而不会受到之前游戏的影响。
有一个 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 用于菜单,只有一种布局
- 游戏本身的第二个
通过这些,您可以确保游戏的值始终以相同的方式加载,而不会受到之前游戏的影响。