从Fragment调用startActivityForResult不会调用onActivityResult
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Fragment调用startActivityForResult不会调用onActivityResult相关的知识,希望对你有一定的参考价值。
我有一个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);
在称为Activity
的Fragment
和startActivityForResult
中:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
当我单击按钮时,我只获得对话框取消并显示背景活动(片段)。
在onActivityResult
或onResume
中没有任何关于Fragment
,Activity
,......的调用包含Fragment
。
我试过的事情:
要在包含我的onActivityResult
的Fragment
和Activity
中实现Fragment
。
要知道的事情:
我在每个noHistory=true
中设置属性Activity
。
如果我在finish()
做onClick
那个叫Activity/Fragment
的DialogActivity
也被关闭了,应用程序返回到之前的Activity
。
这可能是问题,我不打电话给finish()
...但如果我打电话给finish()
,它会退出到另一个Activity
,而不是Activity
称为startActivityForResult
。
我检查的链接:
Cannot get to trigger onActivityResult() android?
startActivityForResult doesn't seem to call onActivityResult
Android onActivityResult NEVER called
onActivityResult() not called when Activity started from Fragment
我希望一切都清楚地解释^^。
提前致谢。
具有noHistory=true
属性的活动在通过onActivityResult()
启动新的Activity
时将永远不会调用它们的startActivityForResult()
。正如documentation所提到的,当noHistory
属性设置为true
时,当用户离开finish()
时,Activity
被调用在Activity
上。
因此,当startActivityForResult()
被调用时,Activity
被导航离开,导致其finish()
被调用并使其永远不会接到对onActivityResult()
的调用。如果从正在调用noHistory=true
的Activity
中删除startActivityForResult()
属性,然后在你的finish()
的DialogActivity
中调用onClick()
,那么你仍然应该看到启动它的Activity
,以及接到对onActivityResult()
的调用。
以上是关于从Fragment调用startActivityForResult不会调用onActivityResult的主要内容,如果未能解决你的问题,请参考以下文章
从Fragment调用startActivityForResult不会调用onActivityResult
从 Fragment 开始ActivityForResult() 并完成子 Activity,不会在 Fragment 中调用 onActivityResult()
Kotlin:如何从 Fragment 调用 JobIntentService?
从 Fragment 类调用 Web 服务(API)的正确方法