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 = […]

Android选项菜单图标不会显示

我正在关注Android开发的一本书,让自己开始写我的第一个真正的应用程序。 我开始为我的一项活动做出select菜单。 菜单显示,但菜单项的相应图标拒绝显示。 这里是菜单的代码: ReminderListActivity @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater mi = getMenuInflater(); mi.inflate(R.menu.list_menu, menu); return true; } RES /菜单/ list_menu.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_insert" android:icon="@drawable/menu_add" android:title="@string/menu_insert" /> </menu> 我从我的Android SDK子文件夹中复制了ic_menu_add.png图标(32x32px)到我的res / drawable-mdpi文件夹,并将文件重命名为menu_add.png。 我在eclipse中刷新了文件夹,所以图标显示出来了,正如你所看到的,我将它设置为我的布局文件中菜单项的图标。 我尝试了几次在模拟器中运行我的项目,但图标从不显示。 为了logging,我正在使用Android 4.0.3 .. 有任何想法吗?

“选项”菜单在使用兼容性库的ICS中不显示

我无法在使用android-support-v4.jar库的项目中的ICS中的片段中显示选项菜单。 我正在testingGalaxy Nexus手机。 我们不使用操作栏,需要应用程序是2.2 +兼容。 我们在ICS活动中没有看到任何选项菜单(FragmentActivity不支持onCreateOptionsMenu) 我可以得到在以前版本的Android工作的菜单 – 我有所有正确的框架来启用选项菜单(如下),但没有在ICS中显示。 在单步执行代码时,onCreateOptionsMenu不会被调用。 任何人都可以build议一个修复 import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; public class SuperFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { setHasOptionsMenu(true); super.onCreate(savedInstanceState); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.display_options_actions, menu); super.onCreateOptionsMenu(menu, inflater); } @Override public […]