Articles of android optionsmenu

android – dynamic更改选项菜单,但通过从XML膨胀

我需要能够改变在Android上的选项菜单(按下菜单button时显示的那个),以便在一种情况下(例如按下button时),它将使用特定的菜单资源(XML文件如in / res / menu / …),另一种情况是使用不同的XML文件。 到目前为止,我只看到没有XML的例子( 这里和这里的例子),他们工作得很好,但我想能够改变一些情况下的整个菜单。 我试图修改我find的解决scheme,但我的试验没有任何工作。 如果可能的话,我宁愿重新创build菜单,只有当它需要使用与当前菜单资源不同的菜单资源进行更新时。 请帮帮我。

如何在SherlockFragment中实现onCreateOptionsMenu方法?

我真的很努力在我的Sherlock片段中设置onCreateOptionsMenu方法,因为我通常不使用Sherlock片段。 有人可以告诉我必须导入什么,以及如何实施? 我有一些代码: public class MyFragment extends SherlockFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.custom_list, container, false); // SOME CODE … return rootView; } @Override public boolean onCreateOptionsMenu(Menu menu) { // ??? } }

选项菜单locking在星系s4上

我的应用程序使用旧式的选项菜单。 目前我们的目标是API 9.在Galaxy S4上我注意到了以下行为: 用户点击菜单button。 菜单按预期显示。 用户点击“更多”访问溢出部分。 溢出部分按预期方式显示。 用户点击后退button返回到原始选项菜单。 原始菜单按预期显示。 此时,点击选项菜单中的任何元素(包括“更多”)选项似乎没有效果。 但是系统实际上是caching这些水龙头。 如果用户点击五次菜单(没有可见的效果),则点击后退button以隐藏菜单,然后点击菜单button以再次显示菜单,所有caching的水龙头都立即发生。 onOptionsMenuItemSelected()每次用户点击该菜单项时调用一次。 这只发生在S4(可能还有其他三星设备)上。 值得注意的是,我没有看到这种行为使用Galaxy Nexus运行股票4.2.2。 这是三星的Android定制的错误,还是更有可能我在我的应用程序中做错了事情,股票的Android代码是更宽容?

openOptionsMenu()在appcompat-v7 22.1.0或更新版本中不起作用

我已经看到了几个问题的报告,其中openOptionsMenu()不适用于各种Android版本,例如: openOptionsMenu()跨Android版本 openOptionsMenu()不起作用 但我所看到的问题似乎与正在使用的appcompat-v7支持库的版本有关。 从本质上讲,对于新版本的appcompat-v7,如果您的活动扩展了Activity ,将会调用openOptionsMenu(),但如果扩展ActionBarActivity或AppCompatActivity (即使用兼容性库),将无法正常工作。 在旧版本的appcompat-v7中,它工作正常。 它是可重复的,如下所示: 在Android Studio中,导入示例“ActionBarCompat-Basic” 在屏幕上添加一个button,调用openOptionsMenu() 请注意,这可以正常工作,因为示例中使用了旧版本的库,appcompat-v7:21.0.3 改变依赖使用appcompat-v7:23.0.1,重build,当点击button时,菜单不会出现。 更改主要活动来扩展活动(即没有应用程序兼容性) – 它的工作原理 更改主要活动以扩展AppCompatActivity(即使用应用程序兼容性libarry) – 失败 经过一些testing,我发现这停止了在appcompat-v7:22.1.0中的工作,并将不再在此jar的任何新版本中工作。 在模拟器和物理设备上,以及在我testing的两个版本的Android版本5.1.1(23)和2.1(7)上,这种行为是相同的。 我已经添加了这个bug的评论: Android的问题跟踪器的错误 任何build议,意见或解决方法赞赏! 史蒂夫

隐藏PreferenceFragment的选项菜单

我有一个应用程序与几个片段。 只有一个片段有一个选项菜单。 片段可以从片段B(其扩展列表片段)开始。 所以B片段没有选项菜单,如果我从中select一个项目,片段A将启动一个选项菜单,如果返回,片段B仍然没有选项菜单。 问题是如果我从导航抽屉中select设置菜单(它扩展了preferencefragment),而我的当前窗口是片段A,设置片段将显示选项菜单从片段A.但是,如果我从导航抽屉select设置菜单,而我的当前窗口是片段B,C,D(没有选项菜单)一切正常。 片段 – 答: @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menu_station, menu); } 设置片段: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); sharedPreferenceSettings = new SharedPreferenceSettings(getActivity()); addPreferencesFromResource(R.xml.settings); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_settings, container, false); } 哪里有问题? 编辑: 经过几个小时的debugging,我find了解决scheme 问题是不同的fragmentManager片段事务。 […]

java.lang.illegalstateexception:已经在这个布局中设置了一个工厂

我试图改变我的Android应用程序中的选项菜单的背景颜色。 我正在使用ActionBarSherlock库。 我已经试过这个代码来改变选项菜单的背景颜色 https://stackoverflow.com/a/8475357/584095 但是我最后得到了一个exception“java.lang.illegalstateexception:工厂已经在这个layoutinflater上设置”在线 LayoutInflater.setFactory(); 我不知道这个代码有什么问题。 任何人都可以帮助我解决这个问题?

如何使用Fragments在NavigationDrawer上隐藏OptionsMenu?

我正在创buildAndroid应用程序,并且尽可能地尊重最新的Android可用性标准。 特别是,我正在准备使用导航抽屉的用户界面,我试图确保与2.1以上的Android版本的兼容性。 为了解这个问题,该项目包括: 主要活动 导航抽屉; 四个片段(与他们相关的布局)。 当我打开导航抽屉时,出现了我遇到的问题:虽然每个Fragment都有其特定的菜单,但是当我打开导航抽屉时,它将被添加到导航抽屉菜单中。 我尝试了几种方法( invalidateOptionMenu() , menu.clear() ,操作函数isDrawerOpen()和isDrawerClose()等等),但是当我打开navigationdrawer的时候无法删除Fragment的菜单。 这些是我的代码片段,大部分是由Android Studio,我使用的IDE生成的: 主要活动: @Override public boolean onCreateOptionsMenu(Menu menu) { if (!mNavigationDrawerFragment.isDrawerOpen()) { // Only show items in the action bar relevant to this screen // if the drawer is not showing. Otherwise, let the drawer // decide what to show in the action […]

Android – 正确使用invalidateOptionsMenu()

我一直在寻找很多关于invalidateOptionsMenu() ,我知道它是什么。 但是我想不出有什么实际的例子可以使用这种方法。 我的意思是,比方说,我们想要添加一个新的MenuItem到我们的ActionBar ,我们可以简单地从onCreateOptionsMenu(Menu menu)获取菜单,并在任何button的操作中使用它。 现在我真正的问题是,遵循唯一的方式使用invalidateOptionsMenu() ? bool _OtherMenu; protected override void OnCreate (Bundle bundle) { _OtherMenu = false; base.OnCreate (bundle); SetContentView (Resource.Layout.Main); Button button = FindViewById<Button> (Resource.Id.myButton); button.Click += delegate { if(_OtherMenu) _OtherMenu = false; else _OtherMenu = true; InvalidateOptionsMenu (); }; } public override bool OnCreateOptionsMenu (IMenu menu) { var inflater = […]

如何更改工具栏导航图标和选项菜单边距

有什么办法可以改变导航图标的左边界和Toolbar Action项目的右边界吗?

按下菜单button导致在没有ActionBar的Activity中崩溃

我是Android的新手,并在我的第一个应用程序工作。 我有没有在其中的ActionBar的主要活动。 我不想在该Activity显示任何菜单。 一切正常工作但是,当我按下设备本身的菜单button,它会导致我的应用程序强制closures,而不是忽略它。 我正在开发sdk> = 8,所以我正在使用支持库。 我曾尝试添加OnCreateOptionMenu()代码中没有任何东西,但结束了相同的结果。 我的应用程序的名称是GUI和包是gui。 这里是Logcat: 10-09 19:52:32.920: E/AndroidRuntime(7440): FATAL EXCEPTION: main 10-09 19:52:32.920: E/AndroidRuntime(7440): java.lang.NullPointerException 10-09 19:52:32.920: E/AndroidRuntime(7440): at android.support.v7.app.ActionBarImplICS.getThemedContext(ActionBarImplICS.java:274) 10-09 19:52:32.920: E/AndroidRuntime(7440): at android.support.v7.app.ActionBarActivityDelegate.getMenuInflater(ActionBarActivityDelegate.java:89) 10-09 19:52:32.920: E/AndroidRuntime(7440): at android.support.v7.app.ActionBarActivity.getMenuInflater(ActionBarActivity.java:71) 10-09 19:52:32.920: E/AndroidRuntime(7440): at android.app.Activity.onCreatePanelMenu(Activity.java:2554) 10-09 19:52:32.920: E/AndroidRuntime(7440): at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:224) 10-09 19:52:32.920: E/AndroidRuntime(7440): at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:224) 10-09 19:52:32.920: E/AndroidRuntime(7440): at android.support.v7.app.ActionBarActivityDelegateICS.onCreatePanelMenu(ActionBarActivityDelegateICS.java:141) […]