1 从one Activity跳到 two Activity:
startActivity(new intent(this,two.class));
但是我们想在two里加个按钮,当点击时就返回到原来的one中,
这时我们当然可以在点击事件中写:
startActivity(new intent(this,one.class));
但是我们还有另一种方法:
从one Activity跳到 two Activity:
startActivityResult(new intent(this,two.class),1);
1 是用来标记是否是这个startActivityResult的返回值的,一般情况下如果只有一个startActivityResult,没有什么作用,但是如果我们one中有两个startActivityResult,我们可以用1,2......来区分是那个startActivityResult的返回值,确定这个返回结果是谁返回的。
我们跳到two中了,在two里的按钮的点击事件中返回到one:
this.setResult(RESULT_OK);
this.finish();
这样把RESULT_OK这个值返回给了one,在one的
protected void onActivityResult(int requestCode, int resultCode, Intent data) {}
中处理:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK&&requestCode==1) {
//要做的事。
}
}
2 我们想把数据从one带到two,再从two带到one:
1 ---->2; 1中:
Intent intent = new Intent(this, Activity2.class);
Bundle bundle = new Bundle();
bundle.putString("first", "one");
intent .putExtras(bundle);
startActivityForResult(intent ,1);
2中取得1传过来的数据:
Intent intent = this.getIntent();
Bundle bundle = intent .getExtras();
String string = bundle .getString("first");
2的按钮的点击事件中返回1,并带着数据:
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("second", "two");
intent.putExtras(bundle);
this.setResult(RESULT_OK, intent);
this.finish();
返回1后在1中处理返回的结果和返回的数据:
- protected void onActivityResult(int requestCode, int resultCode,
- Intent data){
- switch (resultCode){
- case RESULT_OK:
- Bundle bundle = data.getExtras();
- String string = bundle.getString("second");
- updateText(string);
- }
- }
本文详细介绍了如何在Android应用中实现从一个Activity跳转到另一个Activity,并通过startActivityResult和result返回数据的方法。包括如何在目标Activity中通过setResult和finish返回数据,以及如何在源Activity中通过onActivityResult处理返回的结果和数据。
3302

被折叠的 条评论
为什么被折叠?



