Java onActivityResult更改当前片段

Java onActivityResult更改当前片段,java,android,android-intent,fragment,Java,Android,Android Intent,Fragment,我目前正在编写的一个应用程序出现了一个看似奇怪的bug,到目前为止,这似乎只发生在三星S4上。这不会发生在S4 Mini、S5、S6和海信HS-U980上。这就是为什么我如此困惑 我使用的是滑动抽屉系统,每个菜单项都会更改活动容器中的当前片段 这是一个发生的示例,我转到片段B,单击按钮以使用startActivityForResult加载图像: i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_

我目前正在编写的一个应用程序出现了一个看似奇怪的bug,到目前为止,这似乎只发生在三星S4上。这不会发生在S4 Mini、S5、S6和海信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();
            }
        }
    }
}
然后,我没有返回到片段B,而是返回到主片段,片段A。它还通过片段C中的另一个startActivityForResult调用来执行此操作,它也返回到片段A

在我提到的那些没有这样做的手机上,它返回到通话的片段

如果您需要更多信息/代码,请告诉我,我不确定为什么这种情况似乎只发生在一台设备上。

尝试以下方法:

  • 使用代码正常工作的设备,转到“设置/开发人员选项” 并激活“不保留活动”选项

  • 然后试着做同样的事情,这个问题也会发生 装置

我认为您已经有了在某个方法中添加片段A的代码,该方法在重新创建活动时再次执行


希望这能有所帮助。

噢,哇,它现在确实可以在一台原本没有的设备上使用了。所以我猜S4上的活动正在被破坏?我认为这取决于系统内存。如果运行时内存太小,系统会销毁活动以释放一些存储空间。s4上的内存可能更小或更多,正在后台运行我有两个三星设备,它们都像你的一样快速破坏活动,也许三星软件是我不知道的原因。很高兴这个答案对你有帮助。