在Android 开发中 常常会有这么一个需求,ide
ActivityA 打开 ActivityB ,当 关闭 ActivityB时候须要传递一些数据到ActivityA 中;开发
固然实心思路有不少种,其中系统提供的比较简单的方法就是 startActivityForResult 与 onActivityResult 的结合使用get
看到ForResult 与 Result 故明思议知道了一部分it
startActivityForResult 与 onActivityResult 的时候须要配合Intent 来使用io
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===TONEXTPS Android 中许多地方都用到 startActivityForResult 与 onActivityResult 你们多大致会