手记

【移动开发笔记】Intent使用Bundle传递数据-代码编写错误


从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());    
    }
3人推荐
随时随地看视频
慕课网APP