首页 > 代码库 > startActivityForResult

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

startActivityForResult