Java Android菜单项从未膨胀过

Java Android菜单项从未膨胀过,java,android,xml,android-activity,android-inflate,Java,Android,Xml,Android Activity,Android Inflate,我正在制作一个android应用程序,并试图将一些java代码应用于xml菜单项,但它们并没有膨胀。我在菜单xml文件(存储在res/menu/main.xml中)中定义了一些菜单项,定义如下: <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.and

我正在制作一个android应用程序,并试图将一些java代码应用于xml菜单项,但它们并没有膨胀。我在菜单xml文件(存储在res/menu/main.xml中)中定义了一些菜单项,定义如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".HomeActivity"
    app:showAsAction="always">

    <item android:id="@+id/action_close"
          android:title="Close"
          android:icon="@drawable/exitediting"
          android:enabled="false"
          app:showAsAction="always"/>

    <item android:id="@+id/action_edit"
          android:title="Edit"
          android:icon="@drawable/editbutton"
          android:enabled="false"
          app:showAsAction="always"/>

    <item android:id="@+id/action_mainedit"
          android:title="MainEdit"
          android:icon="@drawable/exitediting"
          android:enabled="true"
          app:showAsAction="always"/>

</menu>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    createAnimatorSets();
    return true;
}
然后在我的createAnimatorSets函数中,我尝试访问如下按钮

final ActionMenuItemView editButton = (ActionMenuItemView) toolbar.getChildAt(1).findViewById(R.id.action_edit);
final ActionMenuItemView closeButton = (ActionMenuItemView) toolbar.getChildAt(1).findViewById(R.id.action_close);
final ActionMenuItemView mainButton = (ActionMenuItemView) toolbar.getChildAt(1).findViewById(R.id.action_mainedit);
这只是返回null。我试图在代码中的这一点上设置一个断点,并观察一些变量。R.id.action\u edit按预期返回id,但findViewById(R.id.action\u edit)和toolbar.getChildAt(1).findViewById(R.id.action\u edit)都返回null。工具栏本身(可变名称工具栏)在那里,按钮存储在里面,但出于某种原因,它们没有充气以便使用。我也尝试过用onStart方法而不是onCreate方法来实现,但这也不起作用。有人知道如何解决这个问题吗


谢谢

您可以在
onCreateOptions菜单(菜单菜单菜单)
方法中使用

MenuItem edit = menu.findItem(R.id.action_edit);
View actionViewEdit = edit.getActionView();

一旦你对菜单进行了膨胀。

所以经过大量测试后,菜单似乎只在onResume中膨胀。这就为我的问题提供了一个非常棘手的解决方案,但将来如果人们对此感到困扰,你需要在onresume中完成你的工作,如果需要,只需将按钮设置为最初隐藏在xml中,就像我所做的那样

尝试在oncreate上添加SetHasOptions菜单(true)method@Catalina当我试图解决它时,我在别的地方看到了这个。此方法仅适用于片段,不适用于主要活动谢谢您的输入。我已经尝试过了,menu.findItem实际上返回了一个menuitemimpl对象,但是getactionview方法仍然返回null