Android开发中使用Bundle数据传值

Bundle是Android开发中的一个类,用于Activity之间传输数据用,Bundle就是一个专门用于导入Intent传值的包。

1.MainActivity.xml 传输数据(4步)

//设置Button点击事件,传输数据进入下一个页面
btn01.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent();//1.实例化一个Intent,得到Intent对象
        intent.setClass(MainActivity.this, Change.class);//当前页面到下一个页面
        Bundle bundle = new Bundle();//2.实例化一个Bundle,得到Bundle对象
        sninfo.setSnlist(snlists);//设置数据
        saomiaostr = new Gson().toJson(sninfo);//获取包裹里的内容
        bundle.putString("saomiao", saomiaostr);//3.把数据保存到Bundle里
        intent.putExtra("Message", bundle);//4.把Bundle放入Intent里,通过Intent将Bundle传到另一个Activity里
        startActivityForResult(intent, 0);
    }
});

2.Change.xml 设置接收数据(3步)

Intent intent = getIntent();//1.获取Bundle传递的对象
Bundle bundle = intent.getBundleExtra("Message");//2.从intent取出bundle
yisaosnstr = bundle.getString("saomiao");//3.找到自己的包裹
sninfo = new Gson().fromJson(yisaosnstr, Sninfo.class);//3.获得包裹里的信息
snlistList = sninfo.getSnlist();//需要什么类型找什么类型
int i = 0;
for (Snlist s : snlistList) {
    i = i + 1;
    sn = sn + i + ". " + s.getSku() + " : " + s.getSn() + "\n";
}

3.Change.xml 返回数据(5步)

//设置Button点击事件,返回数据进入上一个页面
confirmbtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intentnew = new Intent();//1.实例化一个Intent,得到Intent对象
        intentnew.setClass(Change.this, MainActivity.class);//当前页面到上一个页面
        Bundle bundlenew = new Bundle();2.实例化一个Bundle,得到Bundle对象
        sninfo.setSnlist(snlistList);//设置数据
        String aftersaomiaostr = new Gson().toJson(sninfo);//获取包裹里的内容
        bundlenew.putString("aftershanchu", aftersaomiaostr);3.把数据保存到Bundle里
        intentnew.putExtra("afterxiugai", bundlenew);4.把Bundle放入Intent里,通过Intent将Bundle传到另一个Activity里
        Change.this.setResult(1, intentnew);
        Change.this.finish();//5.关闭页面
    }
});

4.MainActivity.xml 接收返回数据(2步)

//接收返回数据
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);//1.获取包裹
    switch (requestCode) {
        case 0:
            switch (resultCode) {
                case 1://2.获取信息
                    Bundle bundle = data.getBundleExtra("afterxiugai");
                    shanchuhoustr = bundle.getString("aftershanchu");
                    xiugaihousninfo = new Gson().fromJson(shanchuhoustr, Sninfo.class);
                    }
            }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章