从Fragment调用startActivityForResult不会调用onActivityResult

wen*_*igo 14 android android-intent android-fragments android-activity

我有一个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();
Run Code Online (Sandbox Code Playgroud)

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();
        }
Run Code Online (Sandbox Code Playgroud)

在片段中调用startActivityForResult:

Intent dialogActivityIntent = new Intent(getActivity(), DialogActivity.class);
startActivityForResult(dialogActivityIntent, 999);
Run Code Online (Sandbox Code Playgroud)

ActivityFragment那个电话startActivityForResult:

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

    super.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)

当我单击按钮时,我只获得对话框取消并显示背景活动(片段).

没有任何呼叫onActivityResult,onResume......在FragmentActivity包含Fragment.

我试过的事情:

为了实现onActivityResult在这两个,FragmentActivity包含我Fragment.

要知道的事情:

noHistory=true每个人Activity都设置了属性.

如果我finish()onClickActivity/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()


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

提前致谢.

ash*_*hes 17

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

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