为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
C

图片描述
从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人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
软件测试工程师
手记
粉丝
1
获赞与收藏
117

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消