我有 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();
}
在Fragment中调用 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);
}
当我单击按钮时,我只获得对话框取消并显示背景活动(片段) .
在 Fragment
中没有 onActivityResult
, onResume
,...的任何调用,或 Activity
包含 Fragment
.
我尝试过的事情:
要在包含我的 Fragment
的 Fragment
和 Activity
中实现 onActivityResult
.
要了解的事项:
我在每个 Activity
中设置了属性 noHistory=true
.
如果我在 onClick
中执行 finish()
,则调用 DialogActivity
的 Activity/Fragment
也会关闭,并且应用程序将返回到 Activity
之前 .
This may be the problem, I DON'T call finish() ... but if I call finish(), it exits to another Activity, not the Activity that calls 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
我希望一切都清楚地解释^^ .
提前致谢 .
1 回答
具有属性
noHistory=true
的活动在通过startActivityForResult()
启动新Activity
时将永远不会调用onActivityResult()
. 正如documentation提到的那样,当noHistory
属性设置为true
时,当用户导航离开Activity
时,_1062450_上会调用finish()
.因此,当
startActivityForResult()
被调用时,Activity
被导航离开,导致其finish()
被调用并使其永远不会接收到对onActivityResult()
的调用 . 如果从正在调用startActivityForResult()
的Activity
中删除noHistory=true
属性,然后在DialogActivity
的onClick()
中调用finish()
,那么您仍然应该看到启动它的Activity
,以及接收对onActivityResult()
的调用 .