在我的应用程序中,当在溢出菜单中选中选项,然后更改方向时,它们将变为未选中状态。有任何解决这个问题的方法吗?
我知道 onSavedInstance
应该能够在这里帮助我,但我不知道如何在我的案例中实现它。
这是一个如何在主要 Activity 中处理我的溢出复选框的示例
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case R.id.subtract_option:
if (item.isChecked()){
item.setChecked(false);
subtractMode = false;
} else{
item.setChecked(true);
subtractMode = true;
}
return true;
default:
return super.onMenuItemSelected(featureId, item);
那么在这种情况下我将如何实现 onSavedInstanceState
?
最佳答案
它与 Android 如何处理方向变化有关。它实际上会终止您的 Activity 并重新启动它。有两种方法可以修复它。
1) 实现 onSaveInstanceState,将所有状态写入一个对象(包括复选框的值)并实现 onRestoreInstanceState 以反转该过程。
2) 添加android:configChanges="orientation"。这将停止覆盖行为。如果您有单独的横向和纵向布局,它还会破坏布局的自动重新加载。
如果您没有单独的方向布局,我推荐路线 2。如果您这样做并且您的应用程序很简单,我建议使用路线 1。如果您需要它并且您的应用程序很复杂,那么您将陷入痛苦的世界。
关于Android 菜单选项复选框未选中方向更改修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17894667/