Android Intent startActivityForResult的练习

场景示例:

主Activity,有着很多子界面功能模块,首先从主界面传递某个数据去到子界面,子界面关闭的时候需要把某个返回数据返回到主界面。

这样的情况下数据交互,就可以用到onActivityResult.

功能参数:

1. startActivityForResult(Intent intent, int requestCode);

    intent 参数: 一个intent对象。

    requestCode参数: 一个标识码,用来给你要传递的子Activity做为标识,当子Activity结果时requestCode将返回到onActivityResult()中。以方便确定是从哪个子Activity中返回过来的。

2. onActivityResult(int requestCode , int resultCode ,Intent data);

    requestCode参数:这个整数返回给主onActivity作为标识,确认返回的数据是从哪个子activity中返回的。

    resultCode参数:这个是由子Activity通过setResult()方法返回。主Activity根据此来判断是否由子Activity返回。

    data参数:一个intent.

3. setResult(int resultCode, intent data)

    resultCode参数:当Activity结束时,resultCode将传递到主Activity的onActivityResult()中。

    data参数:intent对象,返回给主Activity的数据。

 

示例代码:

主Activity。

private final int REQUESTCODE = 1;  //定义一个常量用来做为requestCode

传递:

Intent intent = new Intent().setClass(MainActivity.this,Other.class);
                int a = Integer.parseInt(one.getText().toString());
                int b = Integer.parseInt(two.getText().toString());
                
                /*new一个Bundle对象,并将要传递的数据传入*/ 
                Bundle bundle = new Bundle();  
                bundle.putInt("one",a);  
                bundle.putInt("two",b);  
                
                /*将Bundle对象传递给Intent*/ 
                intent.putExtras(bundle);  
               // startActivity(intent);
                startActivityForResult(intent, REQUESTCODE);
View Code

onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (resultCode) { 
            case RESULT_OK:        
                int three2 = data.getIntExtra("three", 0);
                result_ok.setText(String.valueOf(three2));
                break;
            default:
                break;
        }
    }
View Code

子Activity,Other

Intent it = new Intent();
            int three = Integer.parseInt(result.getText().toString());
             
            it.putExtra("three", three);  
            setResult(RESULT_OK, it);             
            finish();
View Code

 

 

 

 

 

 

 

posted @ 2013-07-03 13:45  oscar.liu  阅读(228)  评论(0编辑  收藏  举报