Фрагмент заменен все еще видимым на фоне

Я пытаюсь заменить один фрагмент на другой, используя новый шаблон ящика навигации. Кажется, что работает, но когда я выбираю другой вариант из ящика, новый фрагмент загружается, но оба фрагмента видны. Я не использую статический фрагмент, поэтому я не знаю, где проблема.

Фрагменты загружаются с помощью метода AdapterView.OnItemClickListener реализующего AdapterView.OnItemClickListener в моей активности.

 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Fragment fragmentToShow = null; // Load desired fragment switch (position) { case 0: // Authors if (fragmentAuthors == null) fragmentAuthors = new FragmentAuthors(); fragmentToShow = fragmentAuthors; break; case 1: // Books if (fragmentBooks == null) fragmentBooks = new FragmentBooks(); fragmentToShow = fragmentBooks; break; } FragmentTransaction ft = fragmentManager.beginTransaction(); ft.replace(R.id.ActivityMain_Drawer_FrameMain, fragmentToShow); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.commit(); mDrawerLayout.closeDrawers(); } 

раскладка

 <!-- The main content view --> <FrameLayout android:id="@+id/ActivityMain_Drawer_FrameMain" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/background_light" /> <!-- The navigation drawer --> <FrameLayout android:id="@+id/ActivityMain_Drawer_FrameMenu" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="@android:color/background_light"> <ListView android:id="@+id/ActivityMain_Drawer_FrameMenu_List" android:layout_width="match_parent" android:layout_height="match_parent" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" /> </FrameLayout> 

Скриншоты

Https://dl.dropboxusercontent.com/u/1763308/Screenshots/device-2013-05-27-113128.png https://dl.dropboxusercontent.com/u/1763308/Screenshots/device-2013-05-27 -113139.png

У меня такая же проблема с некоторыми фрагментами. Чтобы решить эту проблему, я просто установил цвет фона для всех макетов фрагментов, например:

 android:background="?android:attr/colorBackground" 

Я попробовал много предложенных ответов здесь на SO, и после затраченных часов я, наконец, смог решить свою проблему, не указав цвет фона на макете фрагмента.

Мое решение состоит в том, чтобы переопределить метод onBackPressed в Activity, где находится контейнер фрагмента, поэтому каждый раз, когда нажимается кнопка «Назад», я удаляю текущий показанный фрагмент и возвращу предыдущий:

 @Override public void onBackPressed() { List<Fragment> fragments = getSupportFragmentManager().getFragments(); if (fragments.size() > 1) { final Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.my_framelayout); if (currentFragment != null) { getSupportFragmentManager().beginTransaction().remove(currentFragment).commit(); getSupportFragmentManager().popBackStack(); } } else { super.onBackPressed(); } } 

Надеюсь это поможет.

Попробуйте изменить цвет android: background = "@ android: color / background_light" на другой цвет. Возможно, это решает вашу проблему.