i have a SearchView in my MainActivity. i want to pass the text i am entering to my fragment(That contains a ListView) and be able to filter the list using an adapter.
The problem is using the below code i am able to pass in the text entered to the fragment but then i get a nullpointer exception.
Note: the adapter works fine. i also tried setting a TextView in my fragment to the String passed but also the app crashes.
in MainActivity:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_main_actions, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
MenuItem searchItem = menu.findItem(R.id.action_search);
searchView = (SearchView) searchItem.getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener()
{
@Override
public boolean onQueryTextSubmit(String query)
{
TopRatedFragment newFragment = new TopRatedFragment(); //FOR PASSING TEXT
Bundle args = new Bundle();
args.putString("hii", query);
newFragment.setArguments(args);
newFragment.kl();
android.support.v4.app.FragmentTransaction transaction =
getSupportFragmentManager().beginTransaction();
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
System.out.println("on query submit: "+query);
return true;
}
};
searchView.setOnQueryTextListener(textChangeListener);
return super.onCreateOptionsMenu(menu);
In Fragment:
public void kl(){
String menu = getArguments().getString("hii");
adapter.getFilter().filter("hii");
}
LogCat:
10-16 09:26:23.234: E/AndroidRuntime(19960): FATAL EXCEPTION: main
10-16 09:26:23.234: E/AndroidRuntime(19960): java.lang.NullPointerException
10-16 09:26:23.234: E/AndroidRuntime(19960): at com.example.tab.TopRatedFragment.kl(TopRatedFragment.java:51)
10-16 09:26:23.234: E/AndroidRuntime(19960): at com.example.tab.MainActivity$3.onQueryTextSubmit(MainActivity.java:160)
10-16 09:26:23.234: E/AndroidRuntime(19960): at android.widget.SearchView.onSubmitQuery(SearchView.java:1203)
10-16 09:26:23.234: E/AndroidRuntime(19960): at android.widget.SearchView.access$900(SearchView.java:93)
10-16 09:26:23.234: E/AndroidRuntime(19960): at android.widget.SearchView$8.onEditorAction(SearchView.java:1178)
10-16 09:26:23.234: E/AndroidRuntime(19960): at android.widget.TextView.onEditorAction(TextView.java:4973)
10-16 09:26:23.234: E/AndroidRuntime(19960): at com.android.internal.widget.EditableInputConnection.performEditorAction(EditableInputConnection.java:138)
10-16 09:26:23.234: E/AndroidRuntime(19960): at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:297)
10-16 09:26:23.234: E/AndroidRuntime(19960): at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
10-16 09:26:23.234: E/AndroidRuntime(19960): at android.os.Handler.dispatchMessage(Handler.java:99)
10-16 09:26:23.234: E/AndroidRuntime(19960): at android.os.Looper.loop(Looper.java:176)
10-16 09:26:23.234: E/AndroidRuntime(19960): at android.app.ActivityThread.main(ActivityThread.java:5419)
10-16 09:26:23.234: E/AndroidRuntime(19960): at java.lang.reflect.Method.invokeNative(Native Method)
10-16 09:26:23.234: E/AndroidRuntime(19960): at java.lang.reflect.Method.invoke(Method.java:525)
10-16 09:26:23.234: E/AndroidRuntime(19960): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
10-16 09:26:23.234: E/AndroidRuntime(19960): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
10-16 09:26:23.234: E/AndroidRuntime(19960): at dalvik.system.NativeStart.main(Native Method)
Ok so I found out that the problem is that in the Fragment class, outside the onCreateView, the View is null and thus any attribute(TextView, adapter...) is null. thats why im getting nullpointer exception. but cant seem to find how to solve it because i want to set the adapter outside the oncreateview