Java 搜索视图空引用
我看到了这篇与我的问题有关的帖子。 我通读了所有的问题和答案,我都试过了,但没有一个对我有用。 所以最后我试着写一些日志聊天,看看问题出在哪一部分 这是我的菜单_search.xml:Java 搜索视图空引用,java,android,xml,Java,Android,Xml,我看到了这篇与我的问题有关的帖子。 我通读了所有的问题和答案,我都试过了,但没有一个对我有用。 所以最后我试着写一些日志聊天,看看问题出在哪一部分 这是我的菜单_search.xml: <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:title="Sear
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:title="Search"
android:id="@+id/action_search"
android:icon="@drawable/magnifier24"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always|collapseActionView"/>
</menu>
LogCat在E/main停止活动:新文本8:a
所以我猜问题出在recyclerAdapter.setFilter(newList)中强>
我是android编程新手,所以如果有任何建议,我将不胜感激
编辑后,我忘了包括RecyclerAdapter.java
以下更新
我收到如下错误消息:
11-30 13:56:25.274 12928-12928/com.afe.maja.searchview E/MainActivity: newText 8 : a
11-30 13:56:25.275 12928-12928/com.afe.maja.searchview E/InputEventSender: Exception dispatching finished signal.
11-30 13:56:25.275 12928-12928/com.afe.maja.searchview E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
11-30 13:56:25.276 12928-12928/com.afe.maja.searchview E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.afe.maja.searchview.RecyclerAdapter.setFilter(java.util.ArrayList)' on a null object reference
at com.afe.maja.searchview.MainActivity.onQueryTextChange(MainActivity.java:119)
at android.support.v7.widget.SearchView.onTextChanged(SearchView.java:1180)
at android.support.v7.widget.SearchView$10.onTextChanged(SearchView.java:1714)
at android.widget.TextView.sendOnTextChanged(TextView.java:8187)
at android.widget.TextView.handleTextChanged(TextView.java:8249)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:10371)
at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:1208)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:578)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:509)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:508)
at android.text.method.QwertyKeyListener.onKeyDown(QwertyKeyListener.java:223)
at android.text.method.TextKeyListener.onKeyDown(TextKeyListener.java:136)
at android.widget.TextView.doKeyDown(TextView.java:6285)
at android.widget.TextView.onKeyDown(TextView.java:6075)
at android.widget.AutoCompleteTextView.onKeyDown(AutoCompleteTextView.java:829)
at android.view.KeyEvent.dispatch(KeyEvent.java:2688)
at android.view.View.dispatchKeyEvent(View.java:9960)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at com.android.internal.policy.DecorView.superDispatchKeyEvent(DecorView.java:405)
at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1798)
at android.app.Activity.dispatchKeyEvent(Activity.java:3021)
at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:534)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:58)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:316)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:58)
at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:319)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4331)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4302)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3999)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4056)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
at android.view.ViewRootImpl$A
将setFilter更改为
public void setFilter(ArrayList<Icon> newList){
Log.e(LogTAG, "newText 8.1");
if(arrayList != null){
arrayList.clear();
}
Log.e(LogTAG, "newText 8.2");
arrayList.addAll(newList );
Log.e(LogTAG, "newText 8.3");
notifyDataSetChanged();
}
public void setFilter(ArrayList newList){
Log.e(LogTAG,“新文本8.1”);
if(arrayList!=null){
arrayList.clear();
}
Log.e(LogTAG,“新文本8.2”);
arrayList.addAll(newList);
Log.e(LogTAG,“新文本8.3”);
notifyDataSetChanged();
}
更改此选项
RecyclerAdapter myAdapter = new RecyclerAdapter(arrayList);
到
那有什么问题?是抛出异常还是在searchview上键入时什么都没有发生我尝试了,但仍然没有成功。。发生了相同的错误。甚至达不到
Log.e(LogTAG,“newText 8.1”)代码>看看我的另一个答案。你没有初始化你的RecyclerAdapter哦,对了!!谢谢问题解决了。一个位问题,它无法返回到原始数组,经过一点逻辑后,它工作正常。谢谢你,贝克!
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.afe.maja.searchview"
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation 'com.android.support:recyclerview-v7:27.0.1'
implementation 'com.android.support:cardview-v7:27.0.1'
implementation 'com.android.support:design:27.0.1'
implementation 'com.android.support:appcompat-v7:27.0.1'
}
11-30 13:56:25.274 12928-12928/com.afe.maja.searchview E/MainActivity: newText 8 : a
11-30 13:56:25.275 12928-12928/com.afe.maja.searchview E/InputEventSender: Exception dispatching finished signal.
11-30 13:56:25.275 12928-12928/com.afe.maja.searchview E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
11-30 13:56:25.276 12928-12928/com.afe.maja.searchview E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.afe.maja.searchview.RecyclerAdapter.setFilter(java.util.ArrayList)' on a null object reference
at com.afe.maja.searchview.MainActivity.onQueryTextChange(MainActivity.java:119)
at android.support.v7.widget.SearchView.onTextChanged(SearchView.java:1180)
at android.support.v7.widget.SearchView$10.onTextChanged(SearchView.java:1714)
at android.widget.TextView.sendOnTextChanged(TextView.java:8187)
at android.widget.TextView.handleTextChanged(TextView.java:8249)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:10371)
at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:1208)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:578)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:509)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:508)
at android.text.method.QwertyKeyListener.onKeyDown(QwertyKeyListener.java:223)
at android.text.method.TextKeyListener.onKeyDown(TextKeyListener.java:136)
at android.widget.TextView.doKeyDown(TextView.java:6285)
at android.widget.TextView.onKeyDown(TextView.java:6075)
at android.widget.AutoCompleteTextView.onKeyDown(AutoCompleteTextView.java:829)
at android.view.KeyEvent.dispatch(KeyEvent.java:2688)
at android.view.View.dispatchKeyEvent(View.java:9960)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at com.android.internal.policy.DecorView.superDispatchKeyEvent(DecorView.java:405)
at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1798)
at android.app.Activity.dispatchKeyEvent(Activity.java:3021)
at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:534)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:58)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:316)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:58)
at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:319)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4331)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4302)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3999)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4056)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
at android.view.ViewRootImpl$A
public void setFilter(ArrayList<Icon> newList){
Log.e(LogTAG, "newText 8.1");
if(arrayList != null){
arrayList.clear();
}
Log.e(LogTAG, "newText 8.2");
arrayList.addAll(newList );
Log.e(LogTAG, "newText 8.3");
notifyDataSetChanged();
}
RecyclerAdapter myAdapter = new RecyclerAdapter(arrayList);
recyclerAdapter = new RecyclerAdapter(arrayList);