从IntentActivity1跳转到IntentActivity2,错误代码
//IntentActivity1中的相关代码
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(IntentActivity1.this, IntentActivity2.class);
Bundle bundle = new Bundle();
bundle.putSerializable("PersonContent", p);
intent.putExtra("aaa",bundle);
startActivity(intent);
}
//IntentActivity2中的相关代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_intent_activity_2);
Intent intent=getIntent();
Bundle bundle=intent.getBundleExtra("PersonContent");
Person p=(Person)bundle.getSerializable("PersonContent");
mTextView.setText("姓名:"+p.getPersonName()+"\n密码:"+p.getPassWD()+"\n性别:"+p.getSex());
}
运行程序提示有空指针。发现的问题有:
1.intent.putExtra("aaa",bundle);中的aaa一直没有被使用到,可见程序本身就有问题。其实Intent.putExtra的参数可以直接是Bundle,Intent.putExtra(Bundle bundle)。
2.问题1修改后,提示Person p=(Person)bundle.getSerializable("PersonContent");有空指针。修改Bundle bundle=intent.getBundleExtra("PersonContent"); Person p=Person)bundle.getSerializable("PersonContent");为Person p= (Person) intent.getSerializableExtra("PersonContent");后程序正常运行
3.问题2修改后,发现值没有传到IntentActivity2。
修改后的代码为:
//IntentActivity1中的相关代码
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(IntentActivity1.this, IntentActivity2.class);
Bundle bundle = new Bundle();
bundle.putSerializable("PersonContent", p);
intent.putExtra(bundle);
startActivity(intent);
}
//IntentActivity2中的相关代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_intent_activity_2);
Intent intent=getIntent();
Person p= (Person) intent.getSerializableExtra("PersonContent");
mTextView.setText("姓名:"+p.getPersonName()+"\n密码:"+p.getPassWD()+"\n性别:"+p.getSex());
}