Android笔记06-不同activity中数据的传递
概述:通常,我们输入点什么信息,然后点击确定按钮,页面就会跳转到别的activity中,比如说输入账号密码,跳转到自己的主页。这其中涉及到不同activity中数据的传输,bundle功不可没。
Bundle的理解
Bundle可以实现不同activity间切换并且实现数据储存与交换功能
Activity和activity中间可以用intent传递数据,但是本身intent并不具备储存功能,要借助bundle。可以理解为intent是信使,bundle是信。
Bundle是一些键值对的集合
activity B接到信件的时候,打开看,就是看到下表这些东西。别人不一定看得懂,但是activityB就是知道拿到这些值要干啥,这是activity A和B之间的“摩斯密码”。(当然“莫斯密码”也是你自己定规则的)
关键字 | 值 |
---|---|
key1 | value1 |
key2 | value2 |
…… | …… |
怎么使用bundle实现数据储存与交换
数据可以通过==putXXX();方法存在bundle中,然后再通过putExtras()方法放在intent中,intent就可以用startActivity()==存在activity中,就实现了数据的传递
比如说输入内容后,点击一个按钮,跳转activity,
思路
MainActivity.java文件代码如下
//前面new一个button和edit text这些基本设置就不写了
public void onClick(View v){
String s1=((EditText)findViewById(R.id.et_s1)).getText().toString(); //找到xml中的EditText组件,并且得到这个组件的输入值,并且转换成string值
if(!"".equals(s1)){
Intent intent = new Intent(MainActivity.this,Activity2.class); //Activity2就是要跳转的页面
Bundle bundle = new Bundle();
bundle.putCharSequence("key1",value1); //这里按照键值对的形式储存,就像上文所说那样
intent.putExtras(bundle);
startActivity(intent);
}
}
Activity2.java文件代码如下
public class Activity2 extends Activity(BuddlesavedInstanceState) {
super.onCreat(savedInstanceState);
setContentView(R.layout.activity2); //找到activity2的xml文件
Intent intent = getIntent();//得到MainActivity.java中的intent
Bundle bundle = intent.getExtras(); //得到intent中的buddle
String name = buddle.getString("key1"); //得到key1中的值
TextView t1 =(TextView)findViewById(R.id.key1); //找到xml中的TextView组件
t1.setText("key1"); //显示key1对应的值
}