Search code examples
javaandroidandroid-fragmentsparcelable

android.os.Parcelable android.os.Bundle.getParcelable(java.lang.String)' on a null object reference


i wanna pass the data, in the first fragment


                Bundle bundle = new Bundle();
                progress = DetailProgressFragmentArgs.fromBundle(getArguments()).getProgress();
                bundle.putParcelable("progress", progress);
                new DetailProgressFragment().setArguments(bundle);

                Log.d("testProgress", String.valueOf(progress.getProgress_id()));

                fragmentTransaction.replace(R.id.fragment, new DetailProgressFragment()).commit();
                fragmentTransaction.addToBackStack(null);

second fragment

Bundle bundle = getArguments();
        progress = (Progress) bundle.getParcelable("progress");

Error

java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Parcelable android.os.Bundle.getParcelable(java.lang.String)' on a null object reference


Solution

  • You created two instance of your fragment. You should create only one like this. Basically you receive NullPointerException because you put inside replace() a new instance of fragment without bundle data inside

    Bundle bundle = new Bundle();
    progress = DetailProgressFragmentArgs.fromBundle(getArguments()).getProgress();
    bundle.putParcelable("progress", progress);
    DetailProgressFragment myFragment = new DetailProgressFragment();
    myFragment.setArguments(bundle);
    Log.d("testProgress", String.valueOf(progress.getProgress_id()));
    
    fragmentTransaction.replace(R.id.fragment,myFragment).commit();
    fragmentTransaction.addToBackStack(null);