首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。