如果错误的顺序,MenuItem的getActionView返回null

时间:2014-12-01 12:47:00

标签: android nullpointerexception menuitem

正如标题所说,我无法弄明白。我没有使用compat支持库。使用android:Theme.Holo.Light.DarkActionBar 这是我的action_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:showAsAction="never"
        android:title="@string/action_settings"/>
    <item
        android:id="@+id/action_search"
        android:actionViewClass="android.widget.SearchView"
        android:icon="@drawable/ic_action_search"
        android:showAsAction="ifRoom|collapseActionView"
        android:title="@string/action_search"/>

</menu>

这是我的活动:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.action_menu, menu);
        mi = menu.findItem(R.id.action_search);
        search = (SearchView)mi.getActionView();
        search.setOnQueryTextListener(getOnQueryTextListener());
        new SearchTask().execute(getIntent().getStringExtra("query"));
        return true;
    }

mi是一个MenuItem。 search是一个SearchView。 如果action_menu.xml中的项的声明顺序是写的,则getActionView返回null。 如果订单被颠倒,它就有效。为什么呢?

1 个答案:

答案 0 :(得分:0)

尝试这样,

<?xml version="1.0" encoding="utf-8"?>
<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:showAsAction="never"
        android:title="@string/action_settings"/>
    <item
        android:id="@+id/action_search"
        android:actionViewClass="android.widget.SearchView"
        android:icon="@drawable/ic_action_search"
        app:showAsAction="ifRoom|collapseActionView"
        android:title="@string/action_search"/>

</menu>

希望它会帮助你

相关问题