Articles of android optionsmenu

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

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

Viewpager中的Fragments的OptionsMenu显示了彼此的按钮

我在viewpager中有三个片段。 其中两个片段有自己的onCreateOptionsMenu方法版本: @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); // Set up 1 action button inflater.inflate(R.menu.home_snapshot_add, menu); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); // Set up 2 action buttons inflater.inflate(R.menu.home_snapshot_send, menu); } home活​​动有一个基本的onCreateOptionsMenu方法: @Override public boolean onCreateOptionsMenu(Menu menu) { return false; } 在onCreate方法中,每个片段都调用该方法: setHasOptionsMenu(true); 每个菜单项都有标签: android:showAsAction=”always” 好像我打开Activity一样,所有三个按钮都出现了。 […]

根据打开的片段更改操作栏中的选项菜单图标

我的选项菜单中有这个项目: 菜单本身在主FragmentActivity中创建。 我想根据打开的Fragment以编程方式更改此项目的图标,显然,当用户点击此按钮时会有不同的操作。 我尝试了几件事,但没有任何效果。 我尝试的最后一件事是我的Fragment的onCreateView方法中的代码: MenuItem mi = (MenuItem) view.findViewById(R.id.opt_mnu_action); mi.setIcon(R.drawable.ico_1); 但我的应用程序崩溃了。 有没有办法做到这一点? **更新** 以下是我现在要做的事情,所有这些都在我的主要主要FragmentActivity中:首先我有一个MenuItem action_button; 在我的层次结构视图中 然后在我的onCreateOptionsMenu方法中实例化它: @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options_menu, menu); action_button = menu.findItem(R.id.opt_mnu_action); return super.onCreateOptionsMenu(menu); } 然后我创建了这个函数来根据打开的标签更改图标: public void change_action_button_icon(int tab_position) { switch(tab_position) { case 0: action_button.setIcon(R.drawable.ico_1); break; case 1: action_button.setIcon(R.drawable.ico_2); break; case 2: action_button.setIcon(R.drawable.ico_3); […]

工具栏选项菜单背景颜色

我正在使用Android工具栏。 我只想更改溢出菜单的背景颜色。 但它并没有改变。 风格xml @style/PopupMenuStyle @style/ThemeOverlay.AppCompat.Dark.ActionBar @android:color/white 工具栏XML

Android选项菜单图标将不会显示

我正在阅读一本关于Android开发的书,让我开始编写我的第一个真正的应用程序。 我达到了我正在为我的一项活动制作选项菜单的地步。 菜单显示,但菜单项的相应图标拒绝显示。 这是菜单的代码: 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 我已将ic_menu_add.png图标(32x32px)从我的一个Android SDK子文件夹复制到我的res / drawable-mdpi文件夹,并将该文件重命名为menu_add.png。 我刷新了eclipse中的文件夹,所以图标显示出来,正如你所看到的,我将它设置为布局文件中菜单项的图标。 我尝试在模拟器中运行我的项目几次,但图标永远不会出现。 为了记录,我使用Android 4.0.3 .. 有任何想法吗?

使用兼容性库在ICS中未显示选项菜单

我无法在使用android-support-v4.jar库的项目中的ICS片段中显示选项菜单。 我正在使用Galaxy Nexus手机进行测试。 我们没有使用操作栏,并且需要该应用程序与2.2+兼容。 我们在ICS的活动中没有看到任何选项菜单(FragmentActivity不支持onCreateOptionsMenu) 我可以在以前版本的Android中使用菜单 – 我有所有正确的框架来启用选项菜单(如下所示)但ICS中没有显示任何内容。 单步执行代码时,不会调用onCreateOptionsMenu。 有人可以建议修复吗? 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 boolean […]

在Android 4.1.x上取消ActionBar Overflow菜单时发出警告

这是我得到的警告: 03-02 14:38:43.980: W/InputEventReceiver(3961): Attempted to finish an input event but the input event receiver has already been disposed. 我的菜单是从常规res/menu/activity_menu.xml文件生成的。 我正在http://developer.android.com/guide/topics/ui/menus.html#options-menu上详细处理这些事件。 当我点击垂直三个点来打开溢出菜单并取消它时,我收到了警告。 似乎很少知道如何抓住它的触发器。 有任何想法吗?

按菜单按钮会导致Activity没有ActionBar崩溃

我是Android的新手,正在开发我的第一个应用程序。 我有主要的活动,里面没有ActionBar 。 而且我不想在该Activity显示任何菜单。 一切都工作正常但是当我按下设备本身的菜单按钮时,它会导致我的应用程序强行关闭而不是忽略它。 我正在为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): […]

Android – 正确使用invalidateOptionsMenu()

我一直在关注invalidateOptionsMenu() ,我知道它的作用。 但是我想不出这个方法可能有用的任何现实生活中的例子。 我的意思是,例如,假设我们想要为ActionBar添加一个新的MenuItem ,我们可以从onCreateOptionsMenu(Menu menu)获取菜单,并在任何按钮的操作中使用它。 现在我真正的问题是,遵循使用invalidateOptionsMenu()的唯一方法? bool _OtherMenu; protected override void OnCreate (Bundle bundle) { _OtherMenu = false; base.OnCreate (bundle); SetContentView (Resource.Layout.Main); Button button = FindViewById (Resource.Id.myButton); button.Click += delegate { if(_OtherMenu) _OtherMenu = false; else _OtherMenu = true; InvalidateOptionsMenu (); }; } public override bool OnCreateOptionsMenu (IMenu menu) { var inflater = this.SupportMenuInflater; […]

如何在android中的菜单项中添加切换按钮

我的应用程序中有选项菜单项。 要求是在菜单项中添加切换按钮。 这可能吗?