从Activity1带参数跳转到Activity2这个经常用到,比较熟悉,但如何从Activity2将数据返回给Activity1呢?这个其实也不麻烦,动手敲一下就知道了。
Activity1代码:
public class MainActivity extends ActionBarActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.main_btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("data","data");
startActivityForResult(intent, 99);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 99){
if(resultCode == 88){
Bundle bundle = data.getExtras();
String back = bundle.getString("back");
Toast.makeText(MainActivity.this,back,Toast.LENGTH_SHORT).show();
}
}
}
}
在MainActivity中通过intent.putExtra("data","data");将数据传递给第二个Activity,若不需要返回值,直接调用startActivity().
这次我们是需要返回值,所以调用startActivityForResult(intent, 99);第二个参数为requestcode。在下面的onActivityResult(int requestCode, int resultCode, Intent data) 方法中
,首先判断requestcode,再判断resultCode,resultCode是在第二个Activity中,我们调用setResult()方法中的一个参数,两个必须一样。
下面是第二个Activity的代码:
public class SecondActivity extends Activity {
private static final String TAG = "zh";
private Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.item);
String str = getIntent().getStringExtra("data");
Log.i(TAG,str);
btn2 = (Button) findViewById(R.id.second_btn);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("back","我是返回的数据");
setResult(88,intent);
finish();
}
});
}
当点击第二个Activity上的按钮后,就会跳转到第一个Activity,同时弹出一个吐司。