如何将对象从一个片段传递到另一个片段?

sur*_*nde 2 android nullpointerexception android-fragments

片段 MoneyTransferFragment 的代码......

MoneyTransferFragment moneyTransferFragment = new MoneyTransferFragment();
                    Bundle b = new Bundle();
                    b.putSerializable("UserValidateObject",userValidate);
                    b.putSerializable("BeneficiaryObject",beneficiaryDetails);
                    moneyTransferFragment.setArguments(b);
Run Code Online (Sandbox Code Playgroud)

我想检索该对象的第二个片段的代码......

Bundle b = getArguments();
    userValidate =(UserValidate) b.getSerializable("UserValidateObject");
    Log.i("getuserValidate",userValidate.toString());
Run Code Online (Sandbox Code Playgroud)

在日志中显示错误......

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
Run Code Online (Sandbox Code Playgroud)

Ank*_*ist 5

更改您的代码 来自:

Bundle b = getArguments();
userValidate =(UserValidate) b.getSerializable("UserValidateObject");
Log.i("getuserValidate",userValidate.toString());
Run Code Online (Sandbox Code Playgroud)

到:

userValidate=(UserValidate)getArguments().getSerializable("UserValidateObject");
Log.i("getuserValidate",userValidate.toString());
Run Code Online (Sandbox Code Playgroud)

活动作品:

    (YourObject)getIntent().getSerializableExtra("keyname");
Run Code Online (Sandbox Code Playgroud)

片段作品:

 (YourObject)getArguments().getSerializable("keyname");
Run Code Online (Sandbox Code Playgroud)