如何解决尝试在空对象引用上调用虚拟方法'void androidx.appcompat.widget.SearchView.setOnQueryTextListener'
运行项目后出现此错误。
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.musicroom,PID: 6561
java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.widget.SearchView.setOnQueryTextListener(androidx.appcompat.widget.SearchView$OnQueryTextListener)' on a null object reference
at com.example.musicroom.fragments.AdminActivity.onCreateOptionsMenu(AdminActivity.java:130)
at androidx.fragment.app.Fragment.performCreateOptionsMenu(Fragment.java:2711)
at androidx.fragment.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManagerImpl.java:2711)
at androidx.fragment.app.FragmentController.dispatchCreateOptionsMenu(FragmentController.java:386)
at androidx.fragment.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:326)
at com.android.internal.policy.PhoneWindow.preparePanel(PhoneWindow.java:619)
at com.android.internal.policy.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:1005)
at com.android.internal.policy.PhoneWindow$1.run(PhoneWindow.java:264)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
at android.view.Choreographer.doCallbacks(Choreographer.java:683)
at android.view.Choreographer.doFrame(Choreographer.java:616)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
@Override
public void onCreateOptionsMenu(Menu menu,MenuInflater inflater) {
super.onCreateOptionsMenu(menu,inflater);
inflater.inflate(R.menu.menu2,menu);
androidx.appcompat.widget.SearchView searchView = ( androidx.appcompat.widget.SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setOnQueryTextListener(new androidx.appcompat.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
return true;
}
});
}
<?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_search"
android:icon="@drawable/ic_search_black_24dp"
android:title="search box"
app:showAsAction="always|ifRoom|collapseActionView"
app:actionViewClass="androidx.appcompat.widget.SearchView"></item>
</menu>
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
Filter exampleFilter=new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
List<rehersalRoom> filteredList=new ArrayList<rehersalRoom>();
if(constraint==null||constraint.length()==0)
{
filteredList.addAll(rrList1);
}
else
{
String Fpattern=constraint.toString().toLowerCase();
for(rehersalRoom item:rrList1)
{
if(item.getRoomName().toLowerCase().contains(Fpattern))
filteredList.add(item);
}
}
FilterResults res=new FilterResults();
res.values=filteredList;
return res;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。