Android:ListFragment中的ListView项重叠在自身上

Bhi*_*fer 4 android android-listview android-fragments

我正在用ListFragments解决一个奇怪的问题.我有一个简单的FragmentActivity与一个FrameLayout女巫是我的ListFragment的容器.我使用自定义适配器来获取数据.在我旋转设备以改变方向之前,所有东西都在抛光.之后,列表视图被显示两次 - 一个列表与第二个列表重叠.当我滚动列表时,只有一个列表正在移动,它会创建如图所示的人工制品.

来自模拟器的截图

我在onCreateActivity中初始化适配器,我在onDestroy方法中没有做任何事情.我在onDestroy方法中应该做些什么来清除列表.你有没有遇到过这个问题?我真的不知道该怎么做.

谢谢!

Bhi*_*fer 6

对不起,我没有附加代码,但我真的不知道哪个部分可以做到这一点.但我终于弄清楚原因是什么.

在父活动的onCreate方法中,我通过调用创建了一个片段

if(mFragment == null)
{
    mFragment = onCreatePane();

    getSupportFragmentManager()
        .beginTransaction()
        .add(R.id.root_container,mFragment)
        .commit();
}
Run Code Online (Sandbox Code Playgroud)

我认为测试null就足够了.但是在Activity中调用onDestroy后(通过旋转设备),片段内容仍保留在FrameLayout中.这很奇怪,不是吗?

我试着把这个代码放到 onStop()

if(mFragment != null)
{
    getSupportFragmentManager()
        .beginTransaction()
        .remove(mFragment)
        .commit();
}
Run Code Online (Sandbox Code Playgroud)

但结果是一样的.我找到的唯一解决方案是add()逐个replace()方法替换方法.但有人知道为什么删除片段没有帮助吗?为什么在销毁Activity之后片段的内容仍然存在于FrameLayout中?

再次感谢.

编辑:

现在我知道这是什么问题.我应该测试savedStateInstance == null而不是mFragment == null.如果不这样做,主活动将从保存的状态恢复旧的Fragment,它将在我的onCreate方法中创建新的Fragment.