【问题标题】:Android Menu does not inflateAndroid 菜单不会膨胀
【发布时间】:2014-10-17 05:56:39
【问题描述】:

我竭尽全力试图让菜单充斥我的主要活动,但无济于事。

我正在使用 Android Studio,设计视图显示 XML 菜单项已正确定义。

但是,当我在手机(运行 Android 4.4.2)或模拟器中运行代码时,菜单项未显示。当我按下菜单时没有任何反应。

欢迎任何启蒙。

菜单 XML - my.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/item1" android:title="Option1"></item>
<item android:id="@+id/item2" android:title="Option2"></item>
<item android:id="@+id/item3" android:title="Option3"></item>
<item android:id="@+id/item4" android:title="Option4"></item>
<item android:id="@+id/item5" android:title="Option5"></item>
<item android:id="@+id/item6" android:title="Option6"></item>
</menu>

活动类 - myActivity.java

package com.example.mymenu;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.util.Log;
import android.widget.Toast;

public class MyActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
   getMenuInflater().inflate(R.menu.my, menu);
   return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.item1:
            Toast.makeText(this, " " +
                    "Option1", Toast.LENGTH_SHORT).show();
            return true;
        case R.id.item2:
            Toast.makeText(this, "Option2", Toast.LENGTH_SHORT).show();
            return true;
        case R.id.item3:
            Toast.makeText(this, "Option3", Toast.LENGTH_SHORT).show();
            return true;
        case R.id.item4:
            Toast.makeText(this, "Option4", Toast.LENGTH_SHORT).show();
            return true;
        case R.id.item5:
            Toast.makeText(this, "Option5", Toast.LENGTH_SHORT).show();
            return true;
        case R.id.item6:
            Toast.makeText(this, "Option6", Toast.LENGTH_SHORT).show();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
}

布局文件

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MyActivity">

    <TextView
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

【问题讨论】:

  • 对我来说看起来不错..只需清理您的项目..
  • 按照你的建议做了,还是没有运气。

标签: android menu


【解决方案1】:

我已经解决了这个问题。 我的手机有一个菜单按钮,按下该按钮将显示菜单列表。

我尝试使用没有菜单按钮的较新手机,菜单显示在操作栏中。

问候

【讨论】:

    【解决方案2】:

    我认为问题是您必须在布局文件夹中创建 my.xml。在菜单文件夹中创建 my.xml。

    【讨论】:

      【解决方案3】:

      交叉检查 menu.xml 是否在 menu 文件夹中,而不是在任何其他 res 文件夹中,例如 layout。 试图在操作栏中给它充气? 如果是,则尝试在 menu.xml 中使用以下代码

      android:showAsAction="always"

      参考:http://developer.android.com/guide/topics/ui/menus.html

      【讨论】:

      • 嗨!添加 showAsAction=always 会给我操作栏上的第一个项目,但没有点击它不会让我列出其余项目。
      【解决方案4】:
      Hi try this if you want to display it in Actionbar.
      
        <menu xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto">
            <item
              android:id="@+id/action_settings"
              android:icon="@drawable/action_overflow"
                  app:showAsAction="always"/>
            <menu>
              <item android:id="@+id/item1" android:title="Option1"></item>
              <item android:id="@+id/item2" android:title="Option2"></item>
              <item android:id="@+id/item3" android:title="Option3"></item>
              <item android:id="@+id/item4" android:title="Option4"></item>
              <item android:id="@+id/item5" android:title="Option5"></item>
              <item android:id="@+id/item6" android:title="Option6"></item>
           </menu>
       </menu>
      

      【讨论】:

      • 好的!除了遵循操作栏文档中的说明外,按照您的建议进行操作。在您建议的修改中, app: 将引用我的应用程序名称。我得到的第一个项目出现在动作中,但不是其余的项目。
      • 在每个项目中添加 android:showAsAction="never" 都可以!例如:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      相关资源
      最近更新 更多