startActivityForResult

1、第一个Activity

Intent intent = new Intent(MainActivity.this,
                        WillActivity.class);
                intent.putExtra("will", item);
                startActivityForResult(intent, 10);
............
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub

        switch (resultCode) { // resultCode为回传的标记,我在B中回传的是10

        case 10:
            Bundle b = data.getExtras(); // data为B中回传的Intentif(b.getBoolean("delete")){
                adapter.removeItem(position);
            }break;
        default:
            break;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

第二个Activity

backIntent = new Intent();
                                                                                            backIntent.putExtra("delete", true);
setResult(10, backIntent);

2处的“10”是resultCode,前后activity的resultCode相等才会执行

调用setResult()方法必须在finish()之前。
那么如果在如下方法中调用setResult()也有可能不会返回成功: onPause(), onStop(), onDestroy(),
因为这些方法调用不一定是在finish之前的,当然在onCreate()就调用setResult肯定是在finish之前的.

一般 可以放在onBackPressed里面,同时该activity的所有退出形式都调用onBackPressed

@Override
    public void onBackPressed() {
        Log.i(TAG, "onBackPressed");
        setResult(Const.LIVE_OK);
        super.onBackPressed();
    }

 

Done

posted @ 2015-01-23 20:00  行云有影  阅读(150)  评论(0编辑  收藏  举报