Android startActivityForResult 与 onActivityResult

在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  你们多大致会
相关文章
相关标签/搜索