错误 java.lang.NullPointerException:尝试在MainActivity.onCreateOptionsMenu上的空对象引用上调用接口方法'android.view.View android.view.MenuItem.getActionView()'
工具栏上的搜索视图代码
Java
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
SearchManager searchManager = (SearchManager)
getSystemService(Context.SEARCH_SERVICE);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) getActionView(searchItem);
ComponentName componentName = new
ComponentName(context,MainActivity.class);
searchView.setSearchableInfo(searchManager.getSearchableInfo(componentName));}
菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView"
android:title="Search" />
XML
<?xml version="1.0" encoding="utf-8"?>
<searchable
xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
android:layout_height="wrap_content"
android:layout_width="match_parent"
/>
答案 0 :(得分:0)
将此行添加到ProGuard文件
-keep class android.support.v7.widget.SearchView { *; }
-keep interface android.support.** { *; }
将此行SearchView searchView = (SearchView) getActionView(searchItem);
替换为
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
Theme.AppCompat
而不是Theme.Base.AppCompat
请查看上述步骤并提供反馈,以帮助您解决问题。