【问题标题】:onActivityResult changing my current FragmentonActivityResult 改变我当前的片段
【发布时间】:2015-04-24 14:45:20
【问题描述】:

我目前正在编写的应用程序出现一个看似奇怪的错误,到目前为止,这似乎只发生在三星 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();
            }
        }
    }
}

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

在我提到的不这样做的电话上,它返回到进行呼叫的片段。

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

【问题讨论】:

    标签: java android android-intent fragment


    【解决方案1】:

    试试这个:

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

    • 然后尝试做同样的事情,问题也应该出现在这个 设备。

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

    希望这会有所帮助。

    【讨论】:

    • 哦,哇,它现在可以在最初没有的设备之一上执行此操作。所以我猜活动在 S4 上被破坏了?
    • 我认为这取决于系统内存。如果在运行时内存太小,系统会销毁活动以释放一些存储空间。 s4 上的内存可能更小或更多在后台运行
    • 我有几台三星设备,它们都像您拥有的那样快速破坏活动,也许三星软件是我不知道的原因。很高兴答案对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 2017-12-19
    相关资源
    最近更新 更多