Android四大核心控件之Activity(二)

Activity数据之间的数据传输:

从一个Activity向另一个Activity传递数据,有两种方式:

第一种就是直接传,首先打开另一个Activity使用的时startActivity()方法,其中参数为Intent类型,然后通过putExtar()方法传递数据:

Intent i =new Intent(MainActivity.this,act1.class);
i.putExtra("key","Nice to meet you!");
startActivity(i);                            
View Code

然后另一个Activity通过如下代码得到数据:

getIntent().getStringExtra("key");//返回String类型的字符串,即Nice to meet you!
View Code

然后你就可以将你的数据从一个Activity加入到另外一个Activity。

第二种就是利用Bundle,这种方法用于传递一些复杂的数据:

首先实例化一个Bundle对象,然后向Bundle对象中放入值,然后通过putExtar()方法传递数据:

Intent i =new Intent(MainActivity.this,act1.class);
Bundle data = new Bundle();
data.putString("key","Nice to meet you!");
i.putExtra("bl",data);
i.putExtra("key2","\nYou are beautiful!");
startActivity(i);
View Code

接收的时候相当于接收到那个Bundle:

OutPut = (TextView) findViewById(R.id.Output);
OutPut2 = (TextView) findViewById(R.id.Output2);
btn1 = (Button) findViewById(R.id.returnMan);
Bundle data = getIntent().getBundleExtra("bl");
String op = data.getString("key");
OutPut.setText(op);
OutPut2.setText(getIntent().getStringExtra("key2"));
View Code

从一个Activity发送数据做到了,怎么再返回数据回去呢,毕竟沟通是相互的,这时我们就用到了startActivityForResult()方法。并且用到onActivityResule()方法。

首先是返回值的写法,我用的是Bundle传递数据:

Bundle bundle = new Bundle();
bundle.putString("key1","Thank you!");
bundle.putString("key2", "And you are handsome!");
Intent i = new Intent(act1.this,MainActivity.class);
i.putExtras(bundle);
setResult(120,i);//120是返回的状态码,可以任意设置
finish();
View Code

接收的时候onActivityResule()方法的写法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        InPut1.setText(data.getExtras().getString("key1"));//InPut1和InPut2是两个TextView
        InPut2.setText(data.getExtras().getString("key2"));

 }
View Code

注意startActivityForResult()有两个参数,第一个是请求状态码,可以任意设置,第二个参数是Intent。onActivityResule()方法有三个参数,第一个参数是请求状态码,第二个是返回状态码,第三个就是返回的数据。

本人是个新手,没什么经验,如发现有错误或者什么好的建议,欢迎指正!请多多指教!

posted @ 2016-03-03 23:16  尚落樱  阅读(132)  评论(0)    收藏  举报