Android 菜单选项复选框未选中方向更改修复

标签 android orientation android-checkbox

在我的应用程序中,当在溢出菜单中选中选项,然后更改方向时,它们将变为未选中状态。有任何解决这个问题的方法吗? 我知道 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/

相关文章:

android - 如何将联系人姓名、号码、contact_id 保存到 ArrayList/联系人选择器

java - 如何自动选择所选项目上方的所有项目

java - 用c++编写的电话应用程序

java - Android - Google Map API v2 - 不幸的是,应用程序已停止。每次强制关闭

android - 在 android mvvm 架构中使用位置 api 的正确位置

android - 异步 LiveData/Room 查询会导致竞争条件吗?

方向变化的android语言环境变化

math - 对齐 IMU 方向,然后获得相对旋转

android - 为什么android模拟器不旋转回来?

java - 如何在离开 Activity 后保持多个复选框的选中状态?