在片段startActivityForResult不调用它关闭它sleft Android

时间:2014-07-31 07:07:54

标签: android android-fragments

我知道有很多与此相关的问题,但我仍然没有找到任何解决方案,我已经尝试了所有的事情。

来自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

我也做过这件事,但仍然无法正常工作。

任何人都有解决方案吗?

感谢

3 个答案:

答案 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