Android - 如何在onActivityResult()之后返回当前片段?

时间:2013-10-25 15:06:19

标签: android android-fragments

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

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

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

如何执行操作并仍然在相同的片段中或在Activity中显示正确的片段?

1 个答案:

答案 0 :(得分: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”检查片段是否已设置。这不是必需的,但这是一个很好的做法。它可以防止您在不需要时替换片段。

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

最后一件可以帮助你的事情就是保留片段,这样它就不会被破坏并再次重建。一些有用的链接:

Understanding Fragment's setRetainInstance(boolean)

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


或者您可以复制粘贴Button的OnClickListener中的内容,以便在onActivityResult上发生。