用Fragment的布局替换DrawerLayout的RelativeLayout无效,但未显示任何错误

时间:2019-12-05 12:50:17

标签: android android-layout android-fragments navigation-drawer drawerlayout

用户单击菜单项“帖子”时,必须将活动的布局替换为开始的片段的布局。

活动的布局(设置为setContentView)是:

<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        style="@style/Album.MatchParent"
        android:id="@+id/RL"
        android:background="@color/albumPageLight">

        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/app_bar_layout"
            style="@style/Album.AppBar.General">

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                style="@style/Album.Toolbar.Light" />

            <include layout="@layout/album_content_album"/>

        </com.google.android.material.appbar.AppBarLayout>
    </RelativeLayout>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="false"
        app:menu="@menu/drawer_view_log_out" />

</androidx.drawerlayout.widget.DrawerLayout>

目标是用片段的布局替换RelativeLayout。为此,我使用以下代码:

if(item.getItemId() == R.id.menu_item_posts_page) {
    fragment_transaction.replace(R.id.RL, new PostsFragment(), PostsFragment.class.getSimpleName());
    if (saved_state != null && !saved_state.equals(PostsFragment.class.getSimpleName())) {
        fragment_transaction.addToBackStack(PostsFragment.class.getSimpleName());
    }
    fragment_transaction.commit();
}

请注意,RL正确地是RelativeLayout的ID。

PostsFragment的布局是:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ProgressBar
        android:id="@+id/progressBar_no_sql_request"
        style="?android:attr/progressBarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintHorizontal_bias="0"
        app:layout_constraintVertical_bias="0"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TESTETSETE"
        app:layout_constraintTop_toBottomOf="@id/progressBar_no_sql_request"
        app:layout_constraintStart_toStartOf="parent"
        />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/posts_list_view"
        android:layout_width="match_parent"
        android:scrollbars="vertical"
        android:layout_height="0dp"
        app:layout_constraintVertical_bias="0"
        app:layout_constraintHorizontal_bias="0"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/progressBar_no_sql_request" />

</androidx.constraintlayout.widget.ConstraintLayout>

问题:当我单击菜单项“帖子”时,未显示任何错误,但根本没有替换任何布局。 是由于我在上面给出的代码中忘记了某些东西吗?

0 个答案:

没有答案