1

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();
OneCricketeer
  • 179,855
  • 19
  • 132
  • 245
BXUMZSE
  • 211
  • 2
  • 11

0 Answers0