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,
思路
在xml中定义一个按钮和一个EditText
在MainActivity.java文件中找到刚定义的按钮和EditText组件
给该按钮装一个监听器
重写按钮的onClick方法
用EditText的`getText`的方法得到输入内容
用`toString`方法转换成字符串
逐个定义输入的信息值
if任意一个信息值为空
报错
if所有信息值不为空
new一个intent
new一个Bundle
用`putCharSequence`的方法储存数据到bundle中
startActivity
在Activity2.java中重写onCreat方法
设置Activity2的布局文件
得到MainActivity.java中的intent
用`getString`方法得到bundle中的值
获取用于显示的文本框
用`setText`方法在文本框中显示
MainActivity.java文件代码如下
public void onClick(View v){
String s1=((EditText)findViewById(R.id.et_s1)).getText().toString();
if(!"".equals(s1)){
Intent intent = new Intent(MainActivity.this,Activity2.class);
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);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String name = buddle.getString("key1");
TextView t1 =(TextView)findViewById(R.id.key1);
t1.setText("key1");
}
|