在Android 开发中 经常会有这么一个需求,
ActivityA 打开 ActivityB ,当 关闭 ActivityB时候需要传递一些数据到ActivityA 中;
当然实心思路有很多种,其中系统提供的比较简单的方法就是 startActivityForResult 与 onActivityResult 的结合使用
看到ForResult 与 Result 故明思议知道了一部分
startActivityForResult 与 onActivityResult 的时候需要配合Intent 来使用
startActivityForResult(Intent intent, int requestCode) 参数 一 需要开启的意图,也就是所需要打开的Activity
参数二,requestCode 是一个int 值的请求码 主要用于标记区分
onActivityResult(int requestCode, int resultCode, Intent data)
int requestCode 也就是 startActivityForResult 方法中的 requestCode
int resultCode 就是 返回码 ActivityB返回的区分状态,
Intent data 就是 返回数据 ActivityB返回的数据
知道了这些参数的具体意思后 就可以开始写代码了 具体看下面
======================================================================
public class MyActivity extends Activity {
/**
* Called when the activity is first created.
*/
Intent intent;
Button one, two;
final int MYACTIVITYCODE =1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
intent = new Intent();
one = (Button) findViewById(R.id.one);
two = (Button) findViewById(R.id.two);
one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 这里是开启一个意图跳转
intent.setClass(getApplication(), OneActvity.class);
startActivityForResult(intent,MYACTIVITYCODE );
}
});
two.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
// 结束意图返回的结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
System.out.println("requestCode ==="+requestCode+"resultCode=="+resultCode+"data==="+data.getStringExtra("TO"));
}
}
================================下面是ActivityB=========================================
public class OneActvity extends Activity {
Intent intent;
Button one;
final int RESULTCODE =2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.one);
intent =new Intent();
one = (Button) findViewById(R.id.one);
one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
* 通过意图返回数据,
* setResult(int resultCode, Intent data)
* int resultCode 返回结果码
* Intent data 返回的数据
*/
intent.putExtra("TO", "TONEXT");
setResult(RESULTCODE,intent);
finish();
}
});
}
}
=======================================打印出来结果=============================
System.out﹕ requestCode ===1 resultCode==2 data===TONEXT
PS Android 中许多地方都用到 startActivityForResult 与 onActivityResult 大家多大体会