Android开发:Bundle传值

您所在的位置:网站首页 bundle安卓 Android开发:Bundle传值

Android开发:Bundle传值

2024-06-20 04:09| 来源: 网络整理| 查看: 265

Android开发:Bundle传值。之前使用的是Intent传值,新学了一个Bundle传值的方法

文章目录 一、Bundle是什么?二、Bundle与Intent区别三、Bundle使用代码示例效果显示

一、Bundle是什么?

Android Developers 文档【Bundle】

public final class Bundle extends BaseBundle implements Cloneable, Parcelable

A mapping from String keys to various Parcelable values. 翻译:从 String 键到各种 Parcelable 值的映射。

Bundle类是一个final类,是一个存储和管理key-value对的类,主要用于存储并传递数据。

二、Bundle与Intent区别

Android Developers 文档【Intent】

An intent is an abstract description of an operation to be performed. It can be used with startActivity to launch an Activity. 翻译:Intent 是对要执行的操作的抽象描述。 它可以与 startActivity 一起使用来启动一个 Activity

Bundle与Intent都可以用来传值,Bundle可以对对象进行操作,而Intent是不可以。Bundle相对于Intent拥有更多的接口,用起来比较灵活,但是使用Bundle也还是需要借助Intent才可以完成数据传递总之,Bundle旨在存储数据,而Intent旨在传值。

三、Bundle使用

Main1.java 代码中的这句:

Intent intent = new Intent().setClassName("com.pkg.myadapter", "com.pkg.myadapter.Main2");

com.pkg.myadapter为收数据页面的包名,com.pkg.myadapter.Main2为收数据页面的类名。就是页面跳转,可替换成:

Intent intent = new Intent(Main1.this,Main2.class); 代码示例

发数据: Main1.java

public class Main1 extends AppCompatActivity { private Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main1); //添加按键跳转到第二个页面Main2.java button1=findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent().setClassName("com.pkg.myadapter", "com.pkg.myadapter.Main2"); Bundle bundle = new Bundle(); bundle.putString("name", "zhangsan"); bundle.putInt("age", 18); intent.putExtras(bundle); startActivity(intent); finish(); } }); }

收数据:Main2.java

public class Main2 extends AppCompatActivity { private Button button3; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Intent intent1=getIntent(); // 实例化Bundle Bundle bundle=intent1.getExtras(); String name=bundle.getString("name"); int age=bundle.getInt("age"); TextView dataTextView = (TextView) findViewById(R.id.textView2); //文本控件接收数据 dataTextView.setText("姓名:"+name+"年龄:"+age); button3=findViewById(R.id.button3); button3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent2 = new Intent(Main2.this,Main1.class); //重新跳回Main1 startActivity(intent1); //激活活动显示接收的数据 startActivity(intent2); //重新跳回Main1 finish(); //结束当前Activity } }); } }

activity_main1.xml

activity_main2.xml

效果显示

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3