我正在使用recyclerview。然后问题是当我单击行之一时,应打开新片段。它打开了,但是旧的片段仍然出现。这是我的屏幕截图:
如您所见,当我单击“欧宝”时,将打开一个新片段。但这是重叠的。
这是我的片段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
基本上就是片段的工作方式。
方法名称replace
可能会引起误解,它不会替换片段,而只会在布局中放置一个片段。因此,如果您想消除另一个片段,则必须将其删除。否则,仅为您的第二个片段设置背景应该可以解决您的问题
为新片段添加背景:
<?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>