基于Bundle的消息传递
2016-02-29 21:04
218 查看
Buddle是一种数据结构,类似于哈希表,是一种键值对,但其值是规定的类型,不能是任意的对象类型,常用类型都是允许的。Buddle的部分方法:
clear():清除此bundle映射中所有保存的数据。
clone():克隆当前bundle中的数据。
containsKey(String key):返回指定key的值。
getString(String key):返回指定key的字符。
hasFileDescriptors():指示是否包含任何捆绑打包文件描述符。
isEmpty():如果这个捆绑映射为空则返回true。
putString(String key, String value):插入一个给定key的字符串值。
remove(String key):移除指定key的值。
putExtras():取出相应buddle中的数据。
如下代码是在新的Activity中,取出其中Buddle存储的信息并显示:
通过Buddle传递多参数:
Buddle是一个类似键值对的数据结构,她不仅可以传递单个键值对,也可以传递多个键值对
目标Activity:
clear():清除此bundle映射中所有保存的数据。
clone():克隆当前bundle中的数据。
containsKey(String key):返回指定key的值。
getString(String key):返回指定key的字符。
hasFileDescriptors():指示是否包含任何捆绑打包文件描述符。
isEmpty():如果这个捆绑映射为空则返回true。
putString(String key, String value):插入一个给定key的字符串值。
remove(String key):移除指定key的值。
putExtras():取出相应buddle中的数据。
public class BuddleDemo_MainActivity extends Activity implements View.OnClickListener { EditText etName; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); etName = (EditText) findViewById(R.id.etname); Button btn = (Button) findViewById(R.id.btn);//将新建的Button实例和布局中建立的Button对应 btn.setOnClickListener(this);//侦听按钮被单击的动作 } public void onClick(View v) { switch (v.getId()) { case R.id.btn: String info = etName.getText().toString();//得到用户输入的内容 Bundle bundle = new Bundle();//新建Buddle //保存输入的信息 bundle.putString("name", info);//将用户输入的内容存放在name字段中 Intent intent=new Intent(BuddleDemo_MainActivity.this,AnotherActivity.class);//跳转 intent.putExtras(bundle);//取出buddle信息 finish();//关闭此Activity startActivity(intent);//确定新的Activity default: break;}}}
如下代码是在新的Activity中,取出其中Buddle存储的信息并显示:
public class AnotherActivity extends Activity { private TextView etName; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.another);//布局文件 etName=(TextView)findViewById(R.id.textname);//将新建的EditText实例和布局中建立的EditText对应 Bundle b=getIntent().getExtras();//从本Intent中对应的Buddle中取出数据 String info=b.getString("name");//得到对应字段的内容 etName.setText("您的姓名:"+info);//显示对应的用户输入的信息 } }
通过Buddle传递多参数:
Buddle是一个类似键值对的数据结构,她不仅可以传递单个键值对,也可以传递多个键值对
public class EditTextDemo_Activity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);//调用main.xml布局 Button mybutton = (Button) findViewById(R.id.mybutton);//在main.xml中已经定义好 mybutton.setOnClickListener(ifclick);//侦听按钮是否被点击 } private Button.OnClickListener ifclick = new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent();//新建一个Intent Bundle myBundleForName1 = new Bundle();//新建一个Bundle用于传递数据 myBundleForName1.putString("store", "你好");//将字符串变量存储在字段store中。 intent.putExtras (myBundleForName1);//将第一个Buddle中的键值对存储在Intent实例中 Bundle myBundleForName2 = new Bundle();//新建一个Bundle用于传递变量 myBundleForName2.putString("mem", "欢迎测试Bundle");//将字符串变量存储在字段mem中。 intent.putExtras (myBundleForName2);//将第二个Buddle中的键值对也存储在Intent实例中,可见Intent实例中可以存储多个键值对 intent.setClass(EditTextDemo_Activity.this, EditTextActivity.class);//通过intent打开另外的Activity startActivity(intent);//从当前的主Activity跳转到EditTextActivity中}}}
目标Activity:
public class EditTextActivity extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle mybundle = this.getIntent().getExtras();//得到Bundle中存储的信息 String mybundlestring1 = mybundle.getString("store");//得到Bundle中存储的store字段信息 String mybundlestring2 = mybundle.getString("mem");//得到Bundle中存储的mem字段信息 setTitle(mybundlestring1+mybundlestring2);//将存储的两个Bundle信息拼接起来作为Activity的标题 setContentView(R.layout.edittext);//布局 EditText my = (EditText) findViewById(R.id.myedittext);//将EditText实例和在布局中的相应widget组件联系起来 CharSequence old = my.getText();//得到该组件的设定信息 my.setText("喂!" + old);//注意字符串拼接方法 Button mybutton = (Button) findViewById(R.id.mybutton2);//在main.xml中已经定义好 mybutton.setOnClickListener(clickornot);//侦听按钮是否被点击 } private Button.OnClickListener clickornot = new Button.OnClickListener() { public void onClick(View v) { EditText mytext = (EditText)findViewById(R.id.myedittext);//myedittext在edittext.xml中有定义 CharSequence newvalue = mytext.getText();//得到用户输入的内容 setTitle(newvalue);//设定为Activity标题}}}
相关文章推荐
- 不使用委托实现Observer模式
- nagios安装使用介绍
- 关于初装kali linux 2.0时DEB文件安装失败的问题
- hihocoder week 86 Spring Outing【思维】
- nagios安装使用介绍
- 虚幻4引擎Gear VR开发入门(上)
- django+mysql
- R语言学习:数据结构1-对象与属性
- mysql 无法执行select查询
- nios II--实验6——串口软件部分
- Windows Phone7 开发工具简介
- 112. Path Sum
- Codeforces 633D Fibonacci-ish 【暴力递归】
- java中volatile关键字的含义
- 第三方瀑布流layout:UICollectionViewWaterfallLayout
- Codeforces 633C Spy Syndrome 2 【字典树 + DFS】
- Spring mvc整合Mybatis例子
- Codeforces 633B A Trivial Problem 【数论】
- [LeetCode]28. Implement strStr()
- MEID与IMEI