旋转 Android 设备时如何保持菜单项组打开

发布于 2024-11-08 21:22:59 字数 557 浏览 2 评论 0原文

我已经在 android 清单中处理了屏幕旋转配置更改,该更改适用于对话框主题活动,但是对于这些菜单组,在选择菜单项(在 onOptionsItemSelected 中)后打开的菜单组在我旋转屏幕时仍然关闭。我可以在 onConfigurationChanged 中处理这些吗?或者有更好的方法吗?我已附上打开子菜单的代码。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
   if (item.getGroupId() == R.id.submenu) {
      if (item.getItemId() == this.submenu) {
         return true;
      }
      this.value = item.getItemId();
      item.setChecked(true);
      //do something with value
      return true;
   }
   //...
   return super.onOptionsItemSelected(item);
}

I've handled screen rotation config changes in the android manifest, which works for dialog themed activities, however for these menu groups, which open after selecting a menu item (in onOptionsItemSelected) still close when I rotate the screen. Can I handle these in onConfigurationChanged? Or is there a better way? I've attached the code that opens the submenu.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
   if (item.getGroupId() == R.id.submenu) {
      if (item.getItemId() == this.submenu) {
         return true;
      }
      this.value = item.getItemId();
      item.setChecked(true);
      //do something with value
      return true;
   }
   //...
   return super.onOptionsItemSelected(item);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱你是孤单的心事 2024-11-15 21:22:59

您将需要重写,

    @Override
 public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
 }

但要做到这一点,您必须指定您将通过在 Activity 级别上的清单文件中添加 onConfigurationChanged 上的标记来自行处理的配置更改

     android:configChanges=["mcc", "mnc", "locale",
                             "touchscreen", "keyboard", "keyboardHidden",
                             "navigation", "orientation", "screenLayout",
                             "fontScale", "uiMode"]

,保存状态并在 onResume 上重新加载它

you will need to override

    @Override
 public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
 }

But to do this you must specify the configuration change you will handle yourself by adding to the manifest file on the Activity level the tag

     android:configChanges=["mcc", "mnc", "locale",
                             "touchscreen", "keyboard", "keyboardHidden",
                             "navigation", "orientation", "screenLayout",
                             "fontScale", "uiMode"]

on onConfigurationChanged save the state and reload it on onResume

陈年往事 2024-11-15 21:22:59

这最终是一个非常简单的修复。我需要将 android:configChanges="orientation" 行添加到 AndroidManifest 中的活动中。

This ended up being a very simple fix. I needed to add the line android:configChanges="orientation" to my activity in the AndroidManifest.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文