问题描述
我想在第一个片段中传递数据
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);
第二个片段
Bundle bundle = getArguments();
progress = (Progress) bundle.getParcelable("progress");
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.os.Parcelable android.os.Bundle.getParcelable(java.lang.String)”
解决方法
您创建了片段的两个实例。你应该只创建一个这样的。 基本上你会收到 NullPointerException 因为你在 replace() 里面放了一个新的片段实例,里面没有包数据
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);