继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

thermos
关注TA
已关注
手记 2
粉丝 1
获赞 117

图片描述
从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());    
    }
打开App,阅读手记
3人推荐
发表评论
随时随地看视频慕课网APP