getActionView()总是返回null
问题描述:
我想将EditText添加到我的操作栏。但是,当我尝试使用getActionView()搜索该项目时,它始终返回null。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总是空,如果你使用的是支持库
答
尝试app:actionLayout="@layout/menu_header"
而不是android:actionLayout="@layout/menu_header"
。
是的。这做到了。非常感谢 – Zvi