Android startActivityForResult 与 onActivityResult

在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  大家多大体会


posted @ 2015-10-09 15:02  彭007  阅读(211)  评论(0编辑  收藏  举报