android - 将菜单添加到 child 偏好屏幕

标签 android

我的 PreferenceActivity 有一个菜单。在我的 child 首选项屏幕中,我丢失了该菜单(未弹出)。如何让我的菜单也为 child 弹出?

谢谢。

示例:

<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:persistent="true">
  <PreferenceCategory
    android:title="some category"
    android:persistent="true"
    android:orderingFromXml="true">
    <PreferenceScreen
      android:title="some child screen"
      android:summary="some child summary">
      <PreferenceCategory
         ...

第一个首选项屏幕有菜单,但是当您单击子屏幕时,没有菜单。如何添加菜单?

最佳答案

我有更好的解决方案,因为 Suriya 的 child 的 PreferenceScreen 会重复显示。

对于子 PreferenceScreen,我使用相同的 PreferenceActivity。因此,首先对于我们想要使用选项菜单的子 PreferenceScreen,我们在 onCreate 方法中将 Intent 设置为我们的 PreferenceActivity:

ourPreferenceScreen = (PreferenceScreen) findPreference("our_preference_screen");
if (ourPreferenceScreen != null) {
    Intent intent = new Intent(this, PreferenceActivity.class);
    intent.putExtra("ShowOurPreferenceScreen", true);
    ourPreferenceScreen.setIntent(intent);
}

然后在相同的 onCreate 方法中,我们检测我们的 PreferenceActivity 是否以额外标志启动。如果是这样,我们切换到想要的 PreferenceScreen:

if (getIntent().getBooleanExtra("ShowOurPreferenceScreen", false)) {
    setPreferenceScreen(ourPreferenceScreen);
    return;
}

最后我们像这样处理 onCreateOptionMenu 和其他相关的选项菜单方法:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (getPreferenceScreen().equals(ourPreferenceScreen)) {
        // your menu code
        return true;
    }
    return super.onCreateOptionsMenu(menu);
}

关于android - 将菜单添加到 child 偏好屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032141/

相关文章:

Android - 确保通过 Camera Intent 拍照时保留照片方向?

java - Android 多点触控无法正常工作

java - Android webview - 启用隐私浏览

Android MVP模式包结构

android - 自定义 fastScrollOverlay?

java - 以编程方式更改 LinearLayout 的背景颜色

java - 解析,带来所有结果

java - 如何将 ArrayList 计数写入 LogCat?

android - 我如何在 Android 市场未正式支持商家的国家/地区销售我的 Android 应用程序?

java - Android Java函数参数中的 "..."和 "[]"有什么区别?