我有一个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
的{{1}}和Fragment
:
startActivityForResult
当我点击按钮时,我只会取消对话框并显示背景活动(片段)。
在@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
或onActivityResult
包含onResume
中,Fragment
,Activity
,...没有任何电话。
在包含Fragment
的{{1}}和onActivityResult
中实施Fragment
。
我在每个Activity
设置属性Fragment
。
如果我在noHistory=true
中Activity
finish()
,那么调用onClick
的{{1}}也会关闭,应用程序将返回到Activity/Fragment
之前。
这可能是问题,我不打电话给DialogActivity
...但是如果我拨打Activity
,则会退出到另一个finish()
,而不是{{1}调用finish()
。
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
我希望一切都清楚地解释^^。
提前致谢。
答案 0 :(得分:17)
具有属性noHistory=true
的活动在通过onActivityResult()
启动新Activity
时永远不会调用startActivityForResult()
。正如documentation提到的那样,当noHistory
属性设置为true
时,当用户导航离开{finish()
时,Activity
会调用Activity
1}}。
因此,当startActivityForResult()
被调用时,导航Activity
会导致finish()
被调用,并使其永远不会接到onActivityResult()
的来电。如果您从正在调用noHistory=true
的{{1}}中移除Activity
属性,请在startActivityForResult()
的{{1}}中致电finish()
,那么您应该仍然可以看到启动它的DialogActivity
,以及接听onClick()
的电话。