使用Bundle传递复杂数据

25 篇文章 0 订阅

第一种方法

1、在第一个activity中

<span style="font-size:18px;"><span style="white-space:pre">	</span>Button start = (Button)findViewById(R.id.toSecond);
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this,SecondActivity.class);
                Bundle data = new Bundle();
                data.putString("name","Jack");
                data.putInt("age",23);
                i.putExtras(data);
                startActivity(i);
            }
        });</span>

2、在第二个activity中进行数据读取

<span style="font-size:18px;"><span style="font-size:18px;">Intent i = getIntent();
        Bundle data = i.getExtras();
        TextView textView = (TextView) findViewById(R.id.textView);
        textView.setText(String.format("name=%s,age=%d,name1=%s",data.getString("name"),data.getInt("age"),data.getString("name1","LJaer")));</span></span>

通过向intent中传入一个Bundle类型的字符串进行数据传递,name1 没有数值,进行默认LJaer设置


第二种方法

1、在第一个activity中

<span style="font-size:18px;">start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this,SecondActivity.class);
                Bundle data = new Bundle();
                data.putString("name","Jack");
                data.putInt("age",23);
                //i.putExtras(data);
                i.putExtra("info",data);
                startActivity(i);
            }
        });</span>
<span style="font-size:18px;">
</span>
<span style="font-size:18px;">2、在第二个activity中</span>
<pre name="code" class="java"><span style="font-size:18px;">Intent i = getIntent();
        //Bundle data = i.getExtras();
        Bundle data = i.getBundleExtra("info");
        TextView textView = (TextView) findViewById(R.id.textView);
        textView.setText(String.format("name=%s,age=%d,name1=%s",data.getString("name"),data.getInt("age"),data.getString("name1","LJaer")));</span>


 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,这个说法是正确的。在 Android 中,我们可以使用 `Intent` 对象在不同的组件之间传递数据,例如在不同的 `Activity` 之间传递数据。而 `Intent` 对象本身并不能直接传递复杂数据类型,例如自定义的对象、数组、集合等,因此我们需要使用 `Bundle` 对象将这些数据类型打包后再通过 `Intent` 传递。 `Bundle` 是一个键值对数据结构,类似于 `Map`,可以用来存储不同类型的数据。我们可以通过 `put` 方法将数据存储到 `Bundle` 对象中,然后将 `Bundle` 对象通过 `putExtras()` 方法添加到 `Intent` 对象中。在接收 `Intent` 对象时,可以通过 `getExtras()` 方法获取传递过来的 `Bundle` 对象,再从 `Bundle` 对象中取出之前存储的数据。 以下是一个例子,演示了如何使用 `Bundle` 对象在 `Activity` 之间传递数据: 在发送 `Intent` 时: ```java Intent intent = new Intent(this, TargetActivity.class); Bundle bundle = new Bundle(); bundle.putString("name", "Tom"); bundle.putInt("age", 18); intent.putExtras(bundle); startActivity(intent); ``` 在接收 `Intent` 时: ```java Bundle bundle = getIntent().getExtras(); String name = bundle.getString("name"); int age = bundle.getInt("age"); ``` 可以看到,在发送 `Intent` 时,我们将一个包含字符串和整型数据的 `Bundle` 对象添加到 `Intent` 中;在接收 `Intent` 时,我们通过 `getExtras()` 方法获取传递过来的 `Bundle` 对象,并从中取出之前存储的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值