我正在尝试使用新的导航抽屉图案替换另一个片段。它似乎工作,但当我从抽屉中选择另一个选项时,新片段被加载但两个片段都可见。我没有使用静态片段布局,所以我不知道问题出在哪里。
通过我的活动实施onItemClick
的{{1}}方法加载片段。
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();
}
截图
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
答案 0 :(得分:12)
我对某些片段有同样的问题。为了解决这个问题,我简单地为所有片段布局设置背景颜色,例如:
android:background="?android:attr/colorBackground"
答案 1 :(得分:1)
我在SO上尝试了很多建议的答案,花了几个小时后我终于可以解决我的问题,而不必在片段的布局上指定背景颜色。
我的解决方法是覆盖包含片段容器的Activity上的onBackPressed方法,因此每次按下后退按钮时,我将删除当前显示的片段并返回前一个片段:
@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();
}
}
希望这有帮助。
答案 2 :(得分:0)
尝试更改 android:background =“@ android:color / background_light”颜色到其他颜色。可能这样就解决了你的问题。