Android中Activity之间的消息传递

项目场景:

        最近在写云平台数据获取的项目,当我登陆的时候需要一直携带着登陆成功后返回的Cookie值,才能保证后面的接口访问的时候通畅无阻,这就需要将Cookie值在不同的Activity之间传递或者是传递给Fragment


问题描述

        在Activity之间进行传递的时候,使用的是接口传递数据传递数据的方法,但是在Fragment中的时候,一旦进入线程中就会报null,空指针异常;开始想法是使用静态代码块的方式进行判空操作(*但是我的Fragment使用了ViewPager+Fragment+BottomNavgationView实现底部导航栏),于是使用多态的方法进行修改,emmmm还是不可以为空为空!!


解决方案:

这里我使用了Intent传递数据、SharedPreferences轻量级的存储方式进行数据的传递

1、Intent传递数据

        通过Intent的putExtra()方法传递数据,另一个活动可以通过getExtra()方法接收数据。

注意:这里是从 SecondFragment 向 ActivitySensorPage 传递数据

(1)在SecondFragment中

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                MessageBean messageBean = messageBeanList.get(position);
                Toast.makeText(getActivity(), messageBean.getName(), Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(getActivity(), ActivitySensorPage.class);
                intent.putExtra("uid", messageBean.getUid());
                intent.putExtra("token", messageBean.getToken());
                Toast.makeText(getActivity(), Data_uid + Data_token, Toast.LENGTH_SHORT).show();
                startActivity(intent);
            }
        });

(2)在ActivitySensorPage中

        String Data_uid  = null,Data_token  = null;
        Intent intent = getIntent();
        Data_uid = intent.getStringExtra("uid");
        Data_token = intent.getStringExtra("token");
        System.out.println("ActivitySensorPage中接收到的数据 = " + Data_uid + " 和 " + Data_token);
      

2、SharedPreferences传递数据

        SharedPreferences是Android中一种轻量级的存储方式,可以用于存储应用程序的配置文件和一些简单的数据。

注意:这里是ActivityLoginPageSecondFragment传递数据

(1)在ActivityLoginPage中

SharedPreferences.Editor editor = ActivityLoginPage.this.getSharedPreferences("DATA", Context.MODE_PRIVATE).edit();
                                    editor.putString("DATA", GetCookie);
                                    editor.apply();

(2)在SecondFragment中

SharedPreferences sharedPreferences = getActivity().getSharedPreferences("DATA", MODE_PRIVATE);
        data = sharedPreferences.getString("DATA", "");

注意:在用Fragment获取Activity中的数据时会出现可能为空指针的提醒!!!我们需要在 onAttach() 方法中获取 Activity 中的数据并赋值给成员变量,然后在需要使用 getActivity() 的地方使用该成员变量;这里参考链接https://www.cnblogs.com/tingtasia/p/11545014.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值