【发布时间】:2015-03-22 19:44:04
【问题描述】:
我正在制作一个 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>
然后,在我的主要活动 java 代码中,我将覆盖菜单充气器,如下所示:
@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);
这只是返回空值。我试图在代码中的这一点放置一个断点并观察一些变量。 R.id.action_edit 按预期返回 id,但 findViewById(R.id.action_edit) 和 toolbar.getChildAt(1).findViewById(R.id.action_edit) 都返回 null。工具栏本身(变量名称工具栏)就在那里,按钮存储在里面,但由于某种原因它们没有膨胀以便被使用。我也尝试在 onStart 方法而不是 onCreate 中执行此操作,但这也不起作用。有谁知道如何解决这个问题。
谢谢
【问题讨论】:
-
尝试在 oncreate 方法上添加 sethasoptionsmenu(true)
-
@Catalina 当我试图解决它时,我在其他地方看到了这个。此方法仅适用于片段而不是主要活动
标签: java android xml android-activity android-inflate