拆卸/重新附着碎片会在容器上留下黑屏

时间:2014-04-02 17:25:05

标签: android android-fragments android-support-library

想象一下,我们正在启动应用程序,我们在backstack上添加FragmentA并根据此代码段(见下文),将片段添加到布局中,因此后面的堆栈或容器

当我进入快速设置时 - >打开飞机模式(我知道它可能没有任何关系,但那是唯一的复制品),当我尝试移动到FragmentB时,我得到了空白屏幕。

基本上,FragmentA仍然在后台,当FragmentB被添加到我从UI分离FragmentA时(frag:removefalse),但它仍然在后台。

public static void showFragment(FragmentActivity activity, Fragment f, boolean remove, boolean addToBackStack){
        Fragment lastFragment = activity.getSupportFragmentManager().findFragmentById(R.id.content_frame);
        FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
             if (lastFragment != null) {
                 if(!remove){
                     ft.detach(lastFragment);
                     Log.i("FragmentUtil", "Detaching fragment "+lastFragment.getClass().getSimpleName());
                 }else{
                     Log.i("FragmentUtil", "Removing fragment "+lastFragment.getClass().getSimpleName());
                     ft.remove(lastFragment);
                 }
             }
             if (f != null && !f.isAdded() && !f.isDetached()) {                
                     ft.add(R.id.content_frame, f, f.getClass().getName());
                     Log.i("FragmentUtil", "Adding fragment "+f.getClass().getSimpleName());
                     if(addToBackStack)
                         ft.addToBackStack(f.getClass().getName());
              } else {
                  Log.i("FragmentUtil", "Atttaching fragment "+f.getClass().getSimpleName());

                     ft.attach(f);
              } 
             ft.commit();
    }

这两个片段都显示为remove = falseaddToBackStack = true;

TL;DR:当我显示FragmentA时屏幕变黑并打开飞行模式并尝试添加FragmentB。

0 个答案:

没有答案