android - fragment 相互重叠显示

标签 android android-fragments

我有一个带有 DrawerLayout 的 Activity,使用 http://developer.android.com/training/implementing-navigation/nav-drawer.html 中的指南。 .

当我点击一个drawerItem时,我将当前 View 替换为新的 fragment :

Fragment fragment;
Bundle args = new Bundle();    
fragment = new NewsListFragment();
args.putInt("category", position);

// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
                   .replace(R.id.content_frame, fragment)
                   .commit();        
mDrawerList.setItemChecked(position, true);

现在,有时旧 fragment 没有被替换,而是新 fragment 被放置在旧 fragment 之上:

http://img15.imageshack.us/img15/3179/1kqj.png

为什么会这样,以及如何解决这个问题?

相关的 XML:

<!-- The main content view -->
<LinearLayout 
    android:id="@+id/rlMain"
    android:layout_width="fill_parent"
    android:orientation="vertical"
    android:layout_height="fill_parent">

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:layout_weight="1">
    </FrameLayout>

这种情况有时会发生,我还没有找到重现这种情况的流程。该应用程序不支持旋转,所以它不会在那里发生。

最佳答案

我们使用这个版本并没有收到任何投诉,所以我认为这是正确的答案:

在您的 onCreateView 方法中添加:

if (container != null) {
    container.removeAllViews();
}

一定要检查容器是否为空!

谢谢 https://stackoverflow.com/users/2677588/lia-pronina !

关于android - fragment 相互重叠显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18309815/

相关文章:

android - 如何在 chenge 构建变体 flavor 时更改自动 settings.gradle

android - EditText 值被 backpress 上的另一个编辑文本替换

java - 我正在制作一个壁纸应用程序。我被困在某个地方

android - 重新创建父 Fragment 后获取对子 Fragment 的引用

android - 启动时无法在 Android 应用程序中实例化 fragment

java - android中的乘法持久化程序

android - 在 Android 中的 GreenADO 中生成重复类

java - 改造 - 尝试获取 response.body 时出现 JsonSyntaxException

android - 从自定义 Fragment 调用 DialogFragment,然后设置其属性

android - 如何在水平条形图中显示右侧的标签和左侧的值?