传递Bundle对象
传递Bundle对象
1、总结
Bundle对象用于封装简单的数据 (存入数据),再将其封装到Intent对象中传递给活动,有两次封装
Bundle里面还可以在嵌入Bundle
之前在传递简单数据时候是用putExtra(name,value)方法将指定数据封装到Intent对象
而Bundle对象是先创建Bundle对象再使用各种putXXX (String key,XXX value)方法封装,
对应的用getXXX(String key)方法可从其中获得数据
Bundle对象用法与Intent对象类似,不用Intent对象来封装数据,是因为Bundle对象用来对数据打包,在大型项目开发很受用
封装:Bundle对象准备好就调用putExtras(bundle)或者putExtra(name,bundle)方法将其封装到Intent对象中
调用:getExtras()或者getBundleExtra()方法
2、案例
案例1:用putExtras(bundle)方法封装,用getExtras()方法调用



MainActivity.java
package com.example.transfersimpledata;
import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent i=new Intent(MainActivity.this,ReceiveData.class);Bundle b=new Bundle();b.putString("张三1","1234567");i.putExtras (b);startActivity(i);}});
}
}
ReceiveData.java
package com.example.transfersimpledata;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;public class ReceiveData extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_receive_data);TextView tv=findViewById(R.id.text);Intent intent=getIntent();Bundle bb=intent.getExtras();tv.setText(bb.getString("张三1"));}
}
这里就放了java文件,还差布局文件就是一个小案例,布局文件放最后
注意:添加数据
如果想要在后面再添加一个不存在的数据

运行结果

案例2:
因为putEtra函数也可以直接传入Bundle
所以可以用putExtra(name,bundle)方法封装,用getBundleExtra()方法调用
name看做是一个标识
主活动:

主活动里面的bb可以看做是一个标识符,到时候另外一个活动通过这个标志找到主活动里面的bb

注意看是用getBundleExtra()去调用的
MainActivity.java
package com.example.transfersimpledata;
import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent i=new Intent(MainActivity.this,ReceiveData.class);Bundle b=new Bundle();b.putString("张三1","1234567");i.putExtra("bb",b);startActivity(i);}});
}
}
ReceiveData.java
package com.example.transfersimpledata;
import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;public class ReceiveData extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_receive_data);TextView tv=findViewById(R.id.text);Intent intent=getIntent();Bundle bb1 = intent.getBundleExtra("bb");String s=bb1.getString("张三1");tv.setText(s);}
}
布局文件:
activity_receive_data.xml
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".ReceiveData"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/text"/>
RelativeLayout>
activity_main.xml
<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="点击获得接收的值"android:textSize="20dp"tools:ignore="MissingConstraints" />
androidx.constraintlayout.widget.ConstraintLayout>
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
