Android 从片段中调用startActivityForResult';不要调用ActivityResult
我有一个Android 从片段中调用startActivityForResult';不要调用ActivityResult,android,android-intent,android-fragments,android-activity,Android,Android Intent,Android Fragments,Android Activity,我有一个对话框活动,它是从片段调用的,用于显示带有两个图像按钮的自定义对话框 在对话框Activity.onCreate中 final Dialog dialog = new Dialog(this, R.style.DialogTheme); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.dialog_pause); dialog.getWindow().setBack
对话框活动
,它是从片段
调用的,用于显示带有两个图像按钮的自定义对话框
在对话框Activity.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();
在对话框activity.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);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
在调用startActivityForResult
的活动
和片段
中:
Intent dialogActivityIntent = new Intent(getActivity(), DialogActivity.class);
startActivityForResult(dialogActivityIntent, 999);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
当我点击按钮时,我只会看到“取消”对话框,并显示背景活动(片段)
在ActivityResult
、onResume
、。。。在片段
或活动
中包含片段
我尝试过的事情:
要在包含我的片段的Fragment
和Activity
中实现onActivityResult
需要知道的事情:
我在我的每个活动中设置属性noHistory=true
如果我在onClick
中执行finish()
,调用DialogActivity
的Activity/Fragment
也将关闭,应用程序将返回到之前的Activity
这可能就是问题所在,我不调用finish()。。。但是如果我调用finish()
,它将退出到另一个活动
,而不是调用startActivityForResult的活动
我检查的链接:
我希望一切都解释清楚
提前感谢。当通过startActivityForResult()
启动新的活动时,具有属性noHistory=true
的活动将永远不会调用其onActivityResult()
。如上所述,当noHistory
属性设置为true
时,当用户导航离开活动时,在活动上调用finish()
因此,当调用startActivityForResult()
时,将导航活动
,导致调用其finish()
,并使其永远不会收到对onActivityResult()的调用。如果从调用startActivityForResult()
的Activity
中删除noHistory=true
属性,然后在对话框Activity
的onClick()
中调用finish()
,那么您仍应该看到启动它的Activity
,以及接收到调用onActivityResult()的调用
尝试getActivity().startActivityForResult(dialogActivityIntent,999)
并在活动
中捕获结果,该活动承载片段
我已经尝试过了,代码就在我发帖前一分钟。谢谢:(你想要的活动
结果是否在清单文件中有android:launchMode
指定给singleInstance
或singleTask
?查看此链接可能会对你有所帮助:很抱歉,评论太晚了……我几天后按照你说的解决了这个问题。谢谢!很棒的@ashu..它解决了我的两个问题。)首先,当显示器关闭时,我的活动马上就结束了。其次,问题中提到的相同问题。谢谢你的帮助。