菜单项未在Android模拟器中呈现

时间:2017-01-31 23:52:13

标签: android

我正在尝试在顶部操作栏中创建一个注销菜单项。我执行了以下步骤:

1)res>右键单击>新> android资源目录>资源类型>菜单>确定

2)右键单击新创建的菜单文件夹并选择新的>档案> main_menu.xml

3)基于这些文档https://developer.android.com/guide/topics/resources/menu-resource.html,我在main_menu.xml文本视图中添加了以下xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
</menu>

4)在main_menu.xml设计视图中,我将一个菜单项拖到菜单中。我给它一个id,一个标题和showAsAction总是设置。然后我返回到文本视图并注意到生成了以下内容:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="Logout" android:id="@+id/@+id/logout" android:showAsAction="always"/>
</menu>

5)我修复了id并注意到showAsAction它给出了以下消息:

Should use app:showAsAction with appcompat library with xmlns:app="schemas.android.com/apk/res-auto"'; 

我运行了应用程序,菜单项从未显示过。

通过研究,我将xml更改为:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_settings" android:title="Logout"
          android:orderInCategory="100" app:showAsAction="always"/>
</menu>

我甚至尝试将其添加到xml:

xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"

但菜单项未显示在MainActivity屏幕上。

2 个答案:

答案 0 :(得分:0)

你应该在onCreateOptionMenu活动方法中夸大菜单:getMenuInflater()。inflate(R.menu.main_menu,menu)

答案 1 :(得分:0)

这些也是该文章的有用说明:

  

工具栏已在Android 5.0(API 21)中引入。如果你想   使用早期Android版本的设备上的工具栏即可   使用appcompat-v7支持库提供的downport。

     

目标SDK版本低于API 11的应用程序使用   选项菜单,如果设备上有这样的按钮。选项   如果用户按下Option按钮,则显示菜单。工具栏   酒吧优于选项菜单,因为操作栏显然   可见,而选项菜单仅在请求时显示。

     

工具栏中的条目通常称为操作。虽然它是   可以通过代码在操作栏中创建条目,通常是这样   在XML资源文件中定义。        每个菜单定义都包含在res / menu文件夹中的单独文件中。 Android工具会自动创建引用   到R文件中的菜单项条目,以便菜单资源可以   访问。

     

MenuInflator类允许扩充XML中定义的操作   文件并将其添加到操作栏。可以访问MenuInflator   通过活动中的getMenuInflator()方法。

     

@Override public boolean onCreateOptionsMenu(菜单菜单){
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.mainmenu,menu);返回true; }

     

如果选择了一个动作,则在onOptionsItemSelected()方法中   调用相应的活动。它接收所选的操作为   参数。

     

@Override public boolean onOptionsItemSelected(MenuItem item){
  switch(item.getItemId()){您可以更改的可见性   运行时的工具栏。以下代码演示了这一点。

     

ActionBar actionBar = getActionBar(); actionBar.hide();   actionBar.show();