Android Fragment 返回堆栈

标签 android android-fragments back-stack savestate fragment-backstack

我在我的项目中使用了多个 fragment 。我想保存一个 fragment 的状态,并在我回到这里时恢复这个状态。在此 fragment 中,我显示了多个图像,这些图像会在单击按钮时发生变化。我为此使用以下代码:

String backStateName = fragment.getClass().getName();
FragmentManager fragmentManager = getSupportFragmentManager();
boolean fragmentPopped = fragmentManager.popBackStackImmediate(backStateName, 0);
if (!fragmentPopped) {
 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
 fragmentTransaction.replace(R.id.container_body, fragment);
 fragmentTransaction.addToBackStack(backStateName);
 fragmentTransaction.commit();
}

它工作正常并保存状态,但它不显示以前的图像。

任何帮助、建议或教程将不胜感激。谢谢。

最佳答案

我正在尝试使用 fragment 列表....

Initilize the framents list

  static List<String> fragments = new ArrayList<String>();

Code to fragment change and take in back stack

   String backStateName = fragment.getClass().getName();
    FragmentManager manager = getSupportFragmentManager();
    //fragment not in back stack, create it.
    FragmentTransaction ft = manager.beginTransaction();
    if(!fragments.contains(backStateName)) {

       // ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        // ft.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
        ft.replace(R.id.frame, fragment);
        ft.addToBackStack(backStateName);
        ft.commit();

        fragments.add(backStateName);
        System.out.println("backStateName" + fragments);
    }
    else
    {


        ft.replace(R.id.frame, fragment);
        ft.commit();

    }

onBackpressed

 @Override
public void onBackPressed() {
    if(fragments.size()>0)
        {
            fragments.remove(fragments.size()-1);
        }
        super.onBackPressed();
}

for back remove stack

 final android.app.FragmentManager fm = getFragmentManager();

    fm.addOnBackStackChangedListener(new android.app.FragmentManager.OnBackStackChangedListener() {
        @Override
        public void onBackStackChanged() {

            if (getSupportFragmentManager().getBackStackEntryCount() ==0) {
               // dLayout.closeDrawers();
                finish();
            }
            else
            {
               // dLayout.closeDrawers();

            }
        }
    });

关于Android Fragment 返回堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39343100/

相关文章:

android - 从 Android 上的服务设置音量控制流

从 backStack 返回 fragment 后,Android ViewPager 无法正确显示

android - 刷新或强制重绘 fragment

java - Android 检查什么 fragment 发送了 onClick 操作

android - 返回 Activity 时避免在 recyclerview 中调用 Remote Server

android - fragment PopBackStack

android - 如何允许粘贴到空的 EditText 中?

android - Parse.com 初始化服务器

android - 使用操作按钮创建 GCM 推送消息

android - 如何查找 Activity 是否是堆栈中的最后一个 Activity