从片段呼叫startActivityForResult不叫onActivityResult(Call

2019-07-04 23:05发布

我有一个DialogActivity这是从一个叫做Fragment用于显示自定义Dialog有两个图像按钮。

DialogActivity.onCreate

final Dialog dialog = new Dialog(this, R.style.DialogTheme);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_pause); 
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.show();

DialogActivity.onClick

        @Override
        public void onClick(View v) {
            Log.d(LOGTAG, "onClick CONTINUE");

            Intent resultData = new Intent();
            resultData.putExtra("TEST", "return data");
            setResult(666, resultData);
            dialog.cancel();
        }

在片段调用startActivityForResult

Intent dialogActivityIntent = new Intent(getActivity(), DialogActivity.class);
startActivityForResult(dialogActivityIntent, 999);

ActivityFragment调用startActivityForResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);
}

当我按一下按钮我只得到对话框取消,并显示背景动作(片段)。

没有任何通话onActivityResultonResume ,...在FragmentActivity包含Fragment

事情我想:

为了实现onActivityResult两个, FragmentActivity包含我的Fragment

事项:

我设置属性noHistory=true在每一个Activity我有。

如果我做finish()onClickActivity/Fragment调用DialogActivity太封闭了,以前的应用程序回归Activity

这可能是问题,我不叫finish() ......但如果我调用finish()它退出到另一个Activity ,不Activity调用startActivityForResult

链接我检查:

startActivityForResult()不调用onActivityResult(INT requestCode,INT resultCode为,意图数据)?

无法获取触发onActivityResult()的Android?

startActivityForResult似乎不叫onActivityResult

onActivityResult从来没有所谓的

Android的onActivityResult从来没有所谓的

onActivityResult()时,从活动开始的片段不叫


我希望一切都解释清楚^^。

提前致谢。

Answer 1:

有属性活动noHistory=true将永远不会有自己的onActivityResult()称为推出新的当Activity通过startActivityForResult() 作为文档中提到,当noHistory属性被设置为true ,则finish()被调用的Activity ,当用户导航从远离Activity

所以,当startActivityForResult()被调用时, Activity的导航离开,导致其finish()被调用,并使其永远不会收到一个呼叫onActivityResult() 如果删除noHistory=true从属性Activity是在呼叫startActivityForResult()然后调用finish()在你的DialogActivityonClick()那么你仍然应该看到Activity启动它,以及接收到呼叫onActivityResult()



文章来源: Call startActivityForResult from Fragment doesn't call onActivityResult