我的MenuItem的getActionView()在AppCompat中返回null

时间:2015-01-12 11:57:46

标签: android

我有这个菜单xml工作正常:

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

    <item
        android:id="@+id/context_menu_save"
        android:actionViewClass="my.app.TextViewPlus"
        android:showAsAction="always"
        android:title="@string/logout"
        android:visible="false"/>
</menu>

但是当我开始使用AppComap v7时,我使用getActionView()时出现了null异常。

我将菜单布局更改为:

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

    <item
        android:id="@+id/context_menu_save"
        myapp:actionViewClass="my.app.TextViewPlus"
        myapp:showAsAction="always"
        android:title="@string/logout"
        android:visible="false"/>
</menu>

现在它工作正常。任何人都可以解释,为什么会发生?

2 个答案:

答案 0 :(得分:2)

xmlns:myapp 当您创建自己的(或使用其他人)自定义视图时,会使用此选项。

xmlns:android 这在默认的android视图中使用。

所以你的问题,我希望你使用自己的(或使用他人)自定义视图。所以你有错误。

答案 1 :(得分:2)

在Android Studio v1.5中,我看到此方案的以下消息:

使用appcompat库时,菜单资源应引用 app: 命名空间,而不是 android: 命名空间。

不使用appcompat库时,您应该使用 android: 命名空间。