Intent数据传递
来源:互联网 发布:知柏地黄丸配方 编辑:程序博客网 时间:2024/05/16 18:20
(1)首先是Activity的简单跳转:
Activity的切换一般是通过Intent来实现的,Intent是一个Activity到达另一个Activity的引路者,它描述了起点(当前Activity)和终点(目标Activity)。一个简单Intent实现如下:
Intent intent = new Intent();
intent.setClass(activity1.this, activity2.class);
startActivity(intent);
a、Activity1发送:
Intent intent = new Intent();
intent.setClass(activity1.this, activity2.class);
Bundle bundle = new Bundle();
bundle.putString("something", "Activity1发来的数据");
intent.putExtras(bundle);
startActivity(intent);
b、Activity2接受从Activity1发来的数据:
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
string = bundle.getString("something");
(3)解决了如何传递数据问题,那么下一个问题是如何接受从目标Activity返回的处理结果。这里有两种方式,一是在onRestart方法(onRestrart表示重启Activity时激发的事件,具体看上一篇的生命周期)里面接受处理结果,方法实现和Activity2接受从Activity1发来的数据处理一样。另一种方式,是采用应答模式切换。这里,主要下第二种方式。应答模式切换和普通的切换不同在于,普通的是有去没回,应答则是有来有往。代码实现也不一样:1、从Activity1切换到Activity2:startActivityForResult(intent,0);2、从Activity2返回到Activity1:setResult(RESULT_OK, intent)。3、接受返回结果:protected void onActivityResult()。具体代码如下:
a、从Activity1切换到Activity2:
Intent intent = new Intent();
intent = intent.setClass(ActivityIntent.this, AnotherActivity.class);
Bundle bundle = new Bundle();
bundle.putString("string", et_string.getText().toString());
intent.putExtras(bundle);
startActivityForResult(intent,0);
b、从Activity2返回到Activity1:
Intent intent = new Intent();
intent = intent.setClass(AnotherActivity.this, ActivityIntent.class);
Bundle bundle = new Bundle();
bundle.putInt("result", "Activity2的处理结果");
intent.putExtras(bundle);
AnotherActivity.this.setResult(RESULT_OK, intent);
AnotherActivity.this.finish(); //会触发onDestroy();
c、Activity1接受Activity2的返回结果:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {