我有一个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
.
我尝试过的事情:
要在包含我的Fragment
的Fragment
和Activity
中实现onActivityResult
。
须知事项:
我在我拥有的每个Activity
中都设置了属性noHistory=true
。
如果我onClick
finish()
调用DialogActivity
的Activity/Fragment
也会关闭,应用程序返回到之前的Activity
。
这可能是问题所在,我不打电话给finish()
...但是如果我调用finish()
,它会退出到另一个Activity
,而不是调用startActivityForResult
的Activity
。
我检查的链接:
startActivityForResult() don't call to onActivityResult(int requestCode, int resultCode, Intent data)?
无法触发 onActivityResult() android?
startActivityForResult 似乎没有调用 onActivityResult
onActivityResult 从未被调用
Android onActivityResult 从未调用
onActivityResult() 当活动从片段启动时未调用
我希望一切都^^解释清楚。
提前谢谢。
具有属性noHistory=true
的活动在通过startActivityForResult()
启动新Activity
时永远不会调用其onActivityResult()
。如文档所述,当noHistory
属性设置为true
时,当用户导航离开Activity
时,将在Activity
上调用finish()
。
因此,当调用startActivityForResult()
时,Activity
被导航离开,导致其finish()
被调用并使其永远不会收到onActivityResult()
的调用。如果从调用startActivityForResult()
的Activity
中删除noHistory=true
属性,然后在DialogActivity
的onClick()
中调用finish()
,则仍应看到启动它的Activity
,并收到对onActivityResult()
的调用。
完成结果后关闭所有活动。 例如,在被覆盖的 onActivityResult 中,您可以添加 finishActivity (Activity 1..N)。不要忘记将每个放在尝试捕获下。