I'm using Android Studio 2.2.2. I have a suggestion list of items that will show every time user wants to query or search anything. Once suggested results are shown user can click on the item It should display more information about the item on the next activity however when I try to click an item the application crashes and leading me to NullPointerException
error.
public class SearchList extends Fragment implements AdapterView.OnItemClickListener {}
Imports
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
Logcat updated
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.sample.project,
PID: 3952 java.lang.NullPointerException
Attempt to invoke virtual method 'android.app.FragmentTransaction
android.app.FragmentManager.beginTransaction()' on a null object reference
at com.sample.project.controller.SearchList.onSuggestionClick(SearchList.java:313)
at com.sample.project.MainActivityController$SearchSuggestionListener.onSuggestionClick(MainActivityController.java:1737)
at android.support.v7.widget.SearchView.onItemClicked(SearchView.java:1351)
at android.support.v7.widget.SearchView.access$1800(SearchView.java:103)
at android.support.v7.widget.SearchView$10.onItemClick(SearchView.java:1377)
at android.widget.AutoCompleteTextView.performCompletion(AutoCompleteTextView.java:902)
at android.widget.AutoCompleteTextView.access$500(AutoCompleteTextView.java:91
at android.widget.AutoCompleteTextView$DropDownItemClickListener.onItemClick(AutoCompleteTextView.java:1192)
at android.widget.AdapterView.performItemClick(AdapterView.java:299)
at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
at android.widget.AbsListView$3.run(AbsListView.java:3638)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5045)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
SearchList fragment Error on line 313 - onSuggestionClick(SearchList.java:313)
public void onSuggestionClick(int id, String mediaType, String title) {
FragmentManager manager = getFragmentManager();
//error on this line ---- line 313
FragmentTransaction transaction = manager.beginTransaction();
boolean result;
Bundle args;
switch (mediaType) {
case "movie":
activity.setRestoreMovieDetailsAdapterState(true);
activity.setRestoreMovieDetailsState(false);
if (movieDetails != null && lastVisitedId == id && movieDetails.getTimeOut() == 0) {
movieDetails.onSaveInstanceState(new Bundle());
Bundle bundle = new Bundle();
bundle.putInt("id", id);
Bundle save = movieDetails.getSave();
movieDetails = new MovieDetails();
movieDetails.setTimeOut(0);
movieDetails.setSave(save);
movieDetails.setArguments(bundle);
} else movieDetails = new MovieDetails();
args = new Bundle();
args.putInt("id", id);
movieDetails.setArguments(args);
movieDetails.setTitle(title);
transaction.replace(R.id.frame_container, movieDetails);
result = true;
break;
default:
result = false;
break;
}
lastVisitedId = id;
if (result) {
// add the current transaction to the back stack:
transaction.addToBackStack("movieList");
transaction.commit();
// collapse the search View
((MainActivityController) getActivity()).collapseSearchView();
}
}
MainActivityController Error on line 1737 - onSuggestionClick(MainActivityController.java:1737)
@Override
public boolean onSuggestionClick(int position) {
Cursor cursor = (Cursor) searchView.getSuggestionsAdapter().getItem(position);
if (searchView.getQuery().length() > 1)
addSuggestion(cursor);
//error on this line ----- line 1737
searchList.onSuggestionClick(cursor.getInt(4), cursor.getString(5), cursor.getString(1));
return true;
}
On the MainActivityController
private SearchList searchList = new SearchList();