Skrillex Skrillex - 1 year ago 56
Android Question

Fatal Exception while performing search query

i have a Fragment and inside of that fragment i just added a searchView and ListView and trying to perform searhcQuery but didn't able to got the desired result evrytime am typing anything in the searchView my app is crashing this is how i implemented the searchView -

Search_View.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String Text) {
notesAdapter.getFilter().filter(Text);
return true;
}

@Override
public boolean onQueryTextChange(String newText) {
notesAdapter.getFilter().filter(newText);
return true;

}
});


and this is what am getting in error -

01-21 22:53:29.995 1676-1836/? E/bst_gps: bstgps: failed to open device. err: 2.
01-21 22:53:31.535 6763-6763/? E/InputEventSender: Exception dispatching finished signal.
01-21 22:53:31.535 6763-6763/? E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
01-21 22:53:31.545 6763-6763/? E/MessageQueue-JNI: java.lang.NullPointerException
at pb.myapp.TabFragment2$3.onQueryTextChange(TabFragment2.java:176)
at android.widget.SearchView.onTextChanged(SearchView.java:1153)
at android.widget.SearchView.access$2000(SearchView.java:92)
at android.widget.SearchView$11.onTextChanged(SearchView.java:1638)
at android.widget.TextView.sendOnTextChanged(TextView.java:7408)
at android.widget.TextView.handleTextChanged(TextView.java:7467)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:9183)
at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:962)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:496)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:435)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:30)
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:5532)
at android.widget.TextView.onKeyDown(TextView.java:5343)
at android.widget.AutoCompleteTextView.onKeyDown(AutoCompleteTextView.java:716)
at android.view.KeyEvent.dispatch(KeyEvent.java:2640)
at android.view.View.dispatchKeyEvent(View.java:7696)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.support.v4.view.ViewPager.dispatchKeyEvent(ViewPager.java:2567)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2035)
at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1505)
at android.app.Activity.dispatchKeyEvent(Activity.java:2418)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:50)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:224)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1962)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:3852)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3558)
at and
01-21 22:53:31.545 6763-6763/? D/AndroidRuntime: Shutting down VM
01-21 22:53:31.545 6763-6763/? W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa4d68b20)
01-21 22:53:31.545 1880-1979/? D/BstCommandProcessor-Application: Application crash has been observed.
01-21 22:53:31.545 1880-1979/? W/BstCommandProcessor-Application: in sendHttpRequest, requestType is of CRASH_APP type but one of the requiredInfo is NULL, crashedApp = com.bluestacks.BstCommandProcessor.BstCrashedAppInfo@528037b8
01-21 22:53:31.545 1880-1979/? D/BstCommandProcessor-Application: in sendHttpRequest, request to send to (fqdn): http://10.0.2.2:2861/AppCrashedInfo
data: {"packageName":"pb.myapp","shortPackageName":"pb.myapp","versionCode":1,"versionName":"1.0"}
01-21 22:53:31.545 6763-6763/? D/AndroidRuntime: procName from cmdline: pb.pocketboard
01-21 22:53:31.545 6763-6763/? E/AndroidRuntime: in writeCrashedAppName, pkgName :pb.pocketboard
01-21 22:53:31.545 6763-6763/? D/AndroidRuntime: file written successfully with content: pb.pocketboard StringBuffer : ;pb.pocketboard
01-21 22:53:31.555 6763-6763/? I/Process: Sending signal. PID: 6763 SIG: 9
01-21 22:53:31.555 6763-6763/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: pb.myapp, PID: 6763
java.lang.NullPointerException
at pb.pocketboard.TabFragment2$3.onQueryTextChange(TabFragment2.java:176)
at android.widget.SearchView.onTextChanged(SearchView.java:1153)
at android.widget.SearchView.access$2000(SearchView.java:92)
at android.widget.SearchView$11.onTextChanged(SearchView.java:1638)
at android.widget.TextView.sendOnTextChanged(TextView.java:7408)
at android.widget.TextView.handleTextChanged(TextView.java:7467)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:9183)
at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:962)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:496)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:435)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:30)
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:5532)
at android.widget.TextView.onKeyDown(TextView.java:5343)
at android.widget.AutoCompleteTextView.onKeyDown(AutoCompleteTextView.java:716)
at android.view.KeyEvent.dispatch(KeyEvent.java:2640)
at android.view.View.dispatchKeyEvent(View.java:7696)


my entire code :-

public class TabFragment2 extends Fragment {



ArrayList <String> notesObject;

ArrayAdapter<ParseObject> notesAdapter;
ArrayAdapter<String> CarsAdapter;
ListView List_View;
SearchView Search_View;



SwipeRefreshLayout swipeToReload;




@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.tab_fragment_2, container, false);


List_View = (ListView) view.findViewById(R.id.notesList);
Search_View = (SearchView) view.findViewById(R.id.searchView);

swipeToReload = (SwipeRefreshLayout) view.findViewById(R.id.swipe_refresh_layout);






ParseQuery<ParseObject> query = ParseQuery.getQuery("Notes");
query.whereExists("Title");
query.fromLocalDatastore();
query.findInBackground(new FindCallback<ParseObject>() {

@Override
public void done(List<ParseObject> list,
ParseException e) {

if (e == null) {

if (list.size() <= 0) {

Toast.makeText(getActivity(), "No results", Toast.LENGTH_LONG).show();
}

ArrayList<String> notesArray = new ArrayList<String>();
for (ParseObject j : list) {

notesArray.add(j.getString("Title"));
}

ArrayAdapter notesAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, notesArray);
List_View.setAdapter(notesAdapter);
} else {

e.getMessage();
Log.d("" + e.getMessage(), " errorr");
}

}
}
);



swipeToReload.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
Log.i("", "onRefresh called from SwipeRefreshLayout");


ParseQuery<ParseObject> query = ParseQuery.getQuery("Notes");
query.whereExists("Title");
query.findInBackground(new FindCallback<ParseObject>() {

@Override
public void done(List<ParseObject> list,
ParseException e) {

if (e == null) {


try {

ParseObject.pinAll(list);

} catch (Exception pinE) {

Toast.makeText(getActivity(), "Pinning Failed", Toast.LENGTH_LONG).show();

}

ArrayList<String> notesArray = new ArrayList<String>();
for (ParseObject j : list) {

notesArray.add(j.getString("Title"));
}

ArrayAdapter notesAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, notesArray);
List_View.setAdapter(notesAdapter);

swipeToReload.setRefreshing(false);
notesAdapter.notifyDataSetChanged();
Toast.makeText(getActivity(), "Refresh Done", Toast.LENGTH_LONG).show();


} else {

e.getMessage();
Log.d("" + e.getMessage(), " errorr");
}

}
}
);


}
});



Search_View.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

@Override
public boolean onQueryTextSubmit(String Text) {

Log.d("tag","notesAdapter="+notesAdapter);
notesAdapter.getFilter().filter(Text);

return true;
}

@Override
public boolean onQueryTextChange(String newText) {

Log.d("tag","notesAdapter="+notesAdapter);
notesAdapter.getFilter().filter(newText);

return true;

}
});

return view;

}



public void getNotesFromServer(){


ParseQuery<ParseObject> query = ParseQuery.getQuery("Notes");
query.findInBackground(new FindCallback<ParseObject>() {

@Override
public void done(List<ParseObject> list,
ParseException e) {
// TODO Auto-generated method stub
if (e == null)
{



ArrayList <String> notesArray = new ArrayList<String>();
for (ParseObject j : list){

notesArray.add(j.getString("Title"));
}

ArrayAdapter notesAdapter = new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1, notesArray );
List_View.setAdapter(notesAdapter);



} else {

e.getMessage();
Log.d(""+e.getMessage()," errorr");
}

}}
);}

}

Answer Source

Make sure that your adapter is not null. You can do that simply by having a log like

Log.d("tag","notesAdapter="+notesAdapter);
notesAdapter.getFilter().filter(newText);

then check logcat to see if notesAdapter gives notesAdapter=null. If so then problem is your adapter.

Second, go to your getfilter method in Custom listadapter class and make sure your filter doesn't return null. It must return your filter.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download