SearchView 尝试在空引用上调用虚方法
Posted
技术标签:
【中文标题】SearchView 尝试在空引用上调用虚方法【英文标题】:SearchView Attempt to invoke virtual method on null reference 【发布时间】:2017-05-26 03:01:22 【问题描述】:我将这个search_widget.xml
作为片段中的 SearchView 服务:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:compat="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/tools">
<item android:id="@+id/search_questions"
android:title="Search"
android:icon="@drawable/search"
compat:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>
现在在我的片段中,我有以下代码:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
View rootView = inflater.inflate(R.layout.search_activity_layout, container, false);
listView = (ListView) rootView.findViewById(R.id.search_list_view);
spinner = (ProgressBar) rootView.findViewById(R.id.progressBar);
spinner.setVisibility(View.GONE);
setHasOptionsMenu(true);
return rootView;
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
inflater.inflate(R.menu.search_widget, menu);
MenuItem item = menu.findItem(R.id.search_questions);
SearchView searchView = (SearchView) item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
@Override
public boolean onQueryTextSubmit(String query)
retrieveIdsOfDocuments(query);
return true;
@Override
public boolean onQueryTextChange(String newText)
return false;
);
super.onCreateOptionsMenu(menu, inflater);
在上面的代码中,searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
行出现错误,指出 Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setOnQueryTextListener(android.support.v7.widget.SearchView$OnQueryTextListener)' on a null object reference
。
我曾尝试查看有关在片段中添加菜单的其他 *** 帖子,但没有找到可行的解决方案。
【问题讨论】:
请提供您发现不起作用的其他帖子,以免其他人给出类似的答案 试试这个,***.com/questions/14286768/… 【参考方案1】:你在使用proguard吗?如果是这样,请将以下内容添加到您的规则文件中:
-保持类 android.support.v7.widget.SearchView *;
【讨论】:
【参考方案2】:更新答案:
在您的 search_widget.xml 中,xmlns:app 命名空间不正确。之前错过了。尝试将其设置为以下内容:
xmlns:app="http://schemas.android.com/apk/res-auto"
【讨论】:
以上是关于SearchView 尝试在空引用上调用虚方法的主要内容,如果未能解决你的问题,请参考以下文章
尝试在空对象引用上调用虚方法Spinner.setAdapter(SpinnerAdapter)[duplicate]
尝试在空对象引用上调用虚方法'double android.location.Location.getLatitude()'[duplicate]
尝试在空对象引用上调用虚方法'boolean java.lang.String.equals(java.lang.Object)'
尝试在空对象引用[duplicate]上调用虚方法'java.io.File android.content.Context.getCacheDir()'
引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'int org.json.JSONArray.length()'[duplicate]
Android:尝试在空对象引用[duplicate]上调用虚方法'void android.database.sqlite.SQLiteDatabase.execSQL(java.lang.