-4

I am working on functionality in which I want to send data from send fragment to another. I am setting arguments in one fragment say "A Fragment" and getting it from another say "B Fragment" but the problem is this when I jump to "B fragment" from "C Fragment" which does not contain that value then my app crashes and throws error java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference

My Code:

Fragment A

     Bundle bundle = new Bundle();
            bundle.putString("advisor_id", advisor_id);

            FragmentMicroLearningArticlesList fragmentMicroLearningArticlesList = new FragmentMicroLearningArticlesList();
            fragmentMicroLearningArticlesList.setArguments(bundle);
            android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();

            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.frame, fragmentMicroLearningArticlesList);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();

Fragment B

      String  advisor_id = "";
   if(getArguments().getString("advisor_id") != null )
    {
        advisor_id = getArguments().getString("advisor_id");
    }
    else {
        advisor_id = "";
    }

Logs

2 Answers2

2

As the error says check if argument is null...

if( getArguments() != null && getArguments().getString("advisor_id") != null )
Samuel Eminet
  • 4,647
  • 2
  • 18
  • 32
1

Fragment B

  String  advisor_id = "";
   if(getArguments()!= null )
    {
        advisor_id = getArguments().getString("advisor_id");
    }
    else {
        advisor_id = "";
    }
Ankita
  • 1,129
  • 1
  • 8
  • 15
  • What's the point of the `else` statement? You've already initialised the `String` - this would only make sense if you have `final String advisor_id;` instead of `String advisor_id = "";` and even then `advisor_id` could still be initialised to `null` – Mark Mar 30 '18 at 13:07