传递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>


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部