【问题标题】:Android - How can i return the current fragment after onActivityResult()?Android - 如何在 onActivityResult() 之后返回当前片段?
【发布时间】:2014-05-08 02:48:36
【问题描述】:

我有一个包含一些按钮和一些片段的活动。

如果我单击按钮 A,我将显示片段“FragA”。当我在“FragA”中时,我可以执行一些操作,例如从图库中选择图片,选择图片后我需要留在“FragA”中。

但是当我选择图片时,我返回到Activity并且“FragA”被隐藏了。

如何执行一个动作并且仍然在同一个 Fragment 中或在 Activity 中显示正确的 Fragment?

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    您可以重新创建片段并使用修改此代码在您的活动中替换它:

    if (currentState == STATE_MAIN_FRAGMENT) {
            return;
    }
    mainScreenFragment = (MainScreenFragment) getSupportFragmentManager().findFragmentByTag(MainScreenFragment.TAG);
    if (mainScreenFragment == null) {
        mainScreenFragment = new MainScreenFragment();
    }
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(R.id.flFragmentContainer, mainScreenFragment, MainScreenFragment.TAG);
    fragmentTransaction.commit();
    

    第一个“if”检查是否设置了片段。这不是必需的,但这是一个很好的做法。它可以防止您在不需要时替换片段。

    还有一件事对我来说很奇怪。因为您说 > - 这意味着它已经设置但容器不可见?然后 yourFragmentContainer.setVisiblity(View.VISIBLE);在活动结果中。

    最后可以帮助您的是保留片段,这样它就不会被销毁并再次重新创建。一些有用的链接:

    Understanding Fragment's setRetainInstance(boolean)

    http://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)


    或者您可以复制粘贴 Button 的 OnClickListener 中的内容,这样它也会在 onActivityResult 发生。

    【讨论】:

    • 不错!我做了一些接近你的事情!我创建了一个名为'ACTIVE_FRAGMENT'的int,并在我单击按钮时输入值,然后在onResumeFragments()中检查它。谢谢,伙计!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多