android.os.Parcelable android.os.Bundle.getParcelable(java.lang.String)' 在一个空对象引用上

问题描述

我想在第一个片段中传递数据


                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);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...