我知道有很多与此相关的问题,但我仍然没有找到任何解决方案,我已经尝试了所有的事情。
来自onActivityResult() not called when Activity started from Fragment我发现
getActivity().startActivityForResult(galleryIntent, PICK_IMAGE);
与
startActivityForResult(galleryIntent, PICK_IMAGE);
onActivityResult is not being called in Fragment
super.onActivityResult //on activity
我也做过这件事,但仍然无法正常工作。
任何人都有解决方案吗?
感谢
答案 0 :(得分:0)
如果您使用的是getActivity().startActivityForResult(galleryIntent, PICK_IMAGE);
,那么您必须在活动类中调用onActivityResult()
,然后添加您的片段。
如果您在片段中使用startActivityForResult(galleryIntent, PICK_IMAGE);
,则必须在片段类中调用onActivityResult()
。
答案 1 :(得分:0)
在您创建的活动中,使用意图设置结果。 onActivityResult()将捕获您处理的意图。这是返回int
值的示例。
public void sendResultToFragment(int result) {
Intent resultIntent = new Intent();
resultIntent.putExtra("int-result", result);
setResult(Activity.RESULT_OK, resultIntent);
}
将super.onActivityResult(...)
覆盖保留在您的片段所在的主要活动中。
您必须覆盖片段中的onActivityResult()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case PICK_IMAGE:
int result = data.getInt("int-result");
// Do stuff
break;
default:
super.onActivityResult(requestCode, resultCode, data);
}
}
答案 2 :(得分:0)
嗨,我有同样的问题,我意识到我用旗帜FLAG_ACTIVITY_NO_HISTORY打开了活动
new Intent(SplashActivity.this, StartedActivity.class).setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
文档提到当noHistory属性设置为true或intent中的标志时,当用户导航离开Activity时,将在Activity上调用finish()。
所以只需删除即可解决问题。
顺便说一句,我在片段中有onActivityResult,它对我很有帮助,希望它有所帮助。
答案我发现here