15

我有一个DialogActivity从 a 调用的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);
}

当我单击按钮时,我只会取消对话框并显示后台活动(片段)。

没有任何对onActivityResult, onResume, ... 的调用FragmentActivity包含Fragment.

我尝试过的事情:

onActivityResult在两者中实现,Fragment并且Activity包含我的Fragment.

要知道的事情:

noHistory=true我在每个Activity我拥有的属性中设置了属性。

如果我finish()onClick那个Activity/Fragment调用DialogActivity也关闭了,并且应用程序返回到之前的Activity.

这可能是问题所在,我不打电话finish()......但如果我打电话finish(),它会退出到另一个Activity,而不是Activity那个调用startActivityForResult

我检查的链接:

startActivityForResult() 不调用 onActivityResult(int requestCode, int resultCode, Intent data)?

无法触发 onActivityResult() android?

startActivityForResult 似乎没有调用 onActivityResult

onActivityResult 从未调用过

Android onActivityResult 从未调用

Activity 从 Fragment 启动时未调用 onActivityResult()


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

提前致谢。

4

2 回答 2

17

启动新的via时,具有该属性的活动noHistory=true将永远不会被调用。正如文档中提到的,当属性设置为时,当用户离开时调用.onActivityResult()ActivitystartActivityForResult()noHistorytruefinish()ActivityActivity

因此,当startActivityForResult()被调用时,Activity被导航离开,导致它finish()被调用并使其永远不会收到对 的调用onActivityResult()。如果您从that's calling中删除该noHistory=true属性,然后在您的 's中调用,那么您仍然应该看到that 启动它,并收到对 的调用。ActivitystartActivityForResult()finish()DialogActivityonClick()ActivityonActivityResult()

于 2013-01-03T00:14:33.117 回答
0

完成结果后关闭所有活动。例如,在您覆盖的 onActivityResult 中,您可以添加 finishActivity(活动 1..N)。不要忘记将每个放在 try catch 下。

于 2021-12-25T09:00:08.683 回答