onActivityResult 改变我当前的片段

onActivityResult changing my current Fragment

我目前在编写的应用程序中遇到了一个看似奇怪的错误,到目前为止,这似乎只发生在三星 S4 上。它不会发生在 S4 Mini、S5、S6 和 Hisense HS-U980 上。这就是为什么我很困惑。

我使用的是滑动抽屉系统,每个菜单项都会更改活动容器中的当前片段。

这是一个示例,我转到片段 B,单击按钮以使用 startActivityForResult 加载图像:

i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(i, 1);
break;

然后调用onActivityResult:

public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (resultCode == Activity.RESULT_OK) {

        if (requestCode == 1) {

            if(data.getData() != null) {

                image = ImageTools.copyImage(getActivity(), data.getData());

                int orientation = ImageTools.getOrientationEXIF(getActivity(), image);

                setImage(orientation);

                saveData();

                refreshView();
            }
        }
    }
}

然后我没有返回 Fragment B,而是返回到主要 Fragment,Fragment A。它还通过 Fragment C 中的另一个 startActivityForResult 调用来执行此操作,它也 returns 到 Fragment A。

在我提到的没有这样做的电话上,它返回到拨打电话的片段。

如果您需要更多,请告诉我information/code,我不确定为什么这似乎只发生在一台设备上。

试试这个:

  • 使用您的代码可以运行的设备,转到“设置”/“开发人员选项” 并激活选项不保留活动。

  • 然后照着做试试,这个问题应该也会出现 设备.

我认为您有在重新创建 activity 时再次执行的某些方法中添加片段 A 的代码。

希望这对您有所帮助。