我有一个从 Fragment
调用的 DialogActivity
,用于显示带有两个图像按钮的自定义 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
的 Fragment 中:
Intent dialogActivityIntent = new Intent(getActivity(), DialogActivity.class);
startActivityForResult(dialogActivityIntent, 999);
在 Activity
和调用 startActivityForResult
的 Fragment
中:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
当我点击按钮时,我只会取消对话框并显示后台 Activity ( fragment )。
在 Fragment
或 Activity
中没有对 onActivityResult
、onResume
的任何调用> 包含 fragment
。
我尝试过的事情:
要在 Fragment
和包含我的 Fragment
的 Activity
中实现 onActivityResult
。
须知:
我在我拥有的每个 Activity
中都设置了属性 noHistory=true
。
如果我在 onClick
中执行 finish()
调用 DialogActivity
的 Activity/Fragment
也会关闭,然后应用程序返回到之前的 Activity
。
这可能是问题所在,我不调用 finish()
... 但如果我调用 finish()
,它会退出到另一个 Activity
,而不是调用 startActivityForResult
的 Activity
。
我检查过的链接:
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
的 Activity 在通过 startActivityForResult 启动新的
。作为documentation提到,当 Activity
时永远不会调用它们的 onActivityResult()
()noHistory
属性设置为 true
时,finish()
在 Activity
上被调用用户离开 Activity
。
因此,当 startActivityForResult()
被调用时,Activity
被导航离开,导致它的 finish()
被调用并使它永远不会收到对 onActivityResult()
的调用。如果从调用 startActivityForResult()
的 Activity
中删除 noHistory=true
属性,则调用 finish()
在您的 DialogActivity
的 onClick()
中,您仍然应该看到启动它的 Activity
,并收到对 onActivityResult()
.
关于android - 从 Fragment 调用 startActivityForResult 不会调用 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13825254/