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);
然后另一个Activity通过如下代码得到数据:
getIntent().getStringExtra("key");//返回String类型的字符串,即Nice to meet you!
然后你就可以将你的数据从一个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);
接收的时候相当于接收到那个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"));
从一个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();
接收的时候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")); }
注意startActivityForResult()有两个参数,第一个是请求状态码,可以任意设置,第二个参数是Intent。onActivityResule()方法有三个参数,第一个参数是请求状态码,第二个是返回状态码,第三个就是返回的数据。
本人是个新手,没什么经验,如发现有错误或者什么好的建议,欢迎指正!请多多指教!

浙公网安备 33010602011771号