getActionView()始终返回null

时间:2015-08-08 21:15:07

标签: android android-actionbar android-edittext

我正在尝试将EditText添加到我的操作栏。但是当我尝试使用getActionView()搜索项时,它总是返回null。

我花了大约5个小时在网上搜索解决方案,但我发现的所有内容都与SearchView无关,不适用于我的情况。

似乎我需要使用MenuItemCompat.getActionView(),因为我的minSDK是8,但它总是返回null。

另一个解决方案建议更改proguard规则,但这两者都没有帮助。

请帮忙。

menu_email.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="il.co.talkie.q.SettingsEmailActivity">

<item
    android:id="@+id/action_save"
    android:title="@string/save_action"
    android:orderInCategory="100"
    app:showAsAction="always"
    tools:ignore="AppCompatResource"/>

<item
    android:id="@+id/action_err_email"
    android:title="@string/email_err_prompt"
    android:visible="true"
    android:orderInCategory="1"
    app:showAsAction="always"
    tools:ignore="AppCompatResource"
    android:actionLayout="@layout/menu_header"
    >
</item>

</menu>

menu_header.xml

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

android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="match_parent"

android:background="@color/simple_blue">

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/editText"
    android:text="@string/service_providers_menu_header"
    android:layout_weight="1"
    android:editable="false"
    android:inputType="none" />

</LinearLayout>

以及活动中的相关代码

Java代码

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    getMenuInflater().inflate(R.menu.menu_email, menu);

    MenuItem email_err_menu = menu.findItem(R.id.action_err_email);

    View v = (View) MenuItemCompat.getActionView(email_err_menu);
...
   return true;
}

上面的对象v始终为空

1 个答案:

答案 0 :(得分:3)

如果您使用支持库,请尝试app:actionLayout="@layout/menu_header"而不是android:actionLayout="@layout/menu_header"