刚开始看郭大神的<>,实现以下里面的一些例子.Intent传递数据.
我们利用显示的方式进行Intent的启动.
1.启动intent并输入数据.
Intent intent=new Intent(MainActivity.this,TwoActivity.class);intent.putExtra("data", "hello two");startActivity(intent);
2.接收数据.
Intent intent=getIntent();Log.i("data", intent.getStringExtra("data"));
注.intent传递数据的方式是键值对的形式,所以我们要根据预键来取.这里我们传递的是一个String字符串,当然你也可以传递其他数据类型.不过取的时候我们要根据数据类型来使用不同方法取.如下(当然还有很多,以此类推).
intent.getIntExtra(name, defaultValue);intent.getBooleanExtra(name, defaultValue);
3.返回数据
Intent intent1=new Intent(MainActivity.this,TwoActivity.class);intent1.putExtra("data", "hello two");startActivityForResult(intent1, 1);
在这里我们使用的不是startActivity();而是startActivityForResult();,这是我们要返回数据,所以必须要一个用来识别返回数据的code.
Intent intent=getIntent();data=intent.getStringExtra("data");Log.i("data", data);findViewById(R.id.btn_twolayout).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.putExtra("data1", data+"收到.");setResult(RESULT_OK, intent);finish();}});
接收并返回数据.setResult(RESULT_OK, intent);.然后我们使用finish();将当前的activity销毁掉,返回上一个activity.
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode==1) {if (resultCode == RESULT_OK) {Log.i("data1", data.getStringExtra("data1"));}}super.onActivityResult(requestCode, resultCode, data);}
最后我们重写onActivityResult();方法,并判断requestCode是否等于我们预先设定好的code,和resultCode是否等于RESULT_OK.
在onActivityResult();方法里带有三个参数,分别是requestCode,我们在启动活动时传入的请求码.resultCode,我们在返回数据时候传入的处理结果.data,携带着返回数据的intent.
此外我们还有一个问题,如果我们不是通过预先设定好的按钮返回上一个activity,而是通过back按键返回怎么办?
@Overridepublic void onBackPressed() {Intent intent=new Intent();intent.putExtra("data1", data+"收到.");setResult(RESULT_OK, intent);finish();}
这个时候我们可以通过重写onBackPressed(); 方法来解决.这样的话当我们按下back按键,就会去执行onBackPressed();方法中的代码.
么么哒的效果图 o.o