Kotlin片段重叠问题

问题描述 投票:0回答:2

我正在使用recyclerview。然后问题是当我单击行之一时,应打开新片段。它打开了,但是旧的片段仍然出现。这是我的屏幕截图:enter image description here

如您所见,当我单击“欧宝”时,将打开一个新片段。但这是重叠的。

这是我的片段1:

<?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">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rvarackategori"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/container">

    </FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

这是我的新片段:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.aracYedekParca.chevrolet.ChevroletYedekParcaFragment">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Chevrolet Yedek Parca" />

</FrameLayout>

这是我的代码:

override fun userItemClick(position: Int) {
        //super.userItemClick(position) No need of it.
        when (position) {
            0 -> {

                var fragmentOpel=OpelYedekParcaFragment()
                var transaction = manager.beginTransaction()
                transaction.replace(R.id.container,fragmentOpel)
                transaction.commit()

                Log.e("aki", "opel: " + position)
            } //start a fragment
            1 -> {

                var fragmentChevrolet=ChevroletYedekParcaFragment()
                var transaction = manager.beginTransaction()
                transaction.replace(R.id.container,fragmentChevrolet)
                transaction.commit()
                Log.e("aki", "chevrolet: " + position)
            } //start a fragment
android android-fragments kotlin fragment overlapping
2个回答
0
投票

基本上就是片段的工作方式。

方法名称replace可能会引起误解,它不会替换片段,而只会在布局中放置一个片段。因此,如果您想消除另一个片段,则必须将其删除。否则,仅为您的第二个片段设置背景应该可以解决您的问题


0
投票

为新片段添加背景:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background:"@android:color/white"
    tools:context=".ui.aracYedekParca.chevrolet.ChevroletYedekParcaFragment">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Chevrolet Yedek Parca" />

</FrameLayout>
© www.soinside.com 2019 - 2024. All rights reserved.