android - 多次按下片段调用按钮问题
问题描述
我有一个主要活动,它有一个框架和两个按钮。单击每个按钮会显示一个片段。
应用图片:</p>
代码:
package com.example.activitylifecycle
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import androidx.fragment.app.Fragment
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val firstFragment = FirstFragment()
val secondFragment = SecondFragment()
supportFragmentManager.beginTransaction().apply {
replace(R.id.flFragment, firstFragment)
commit()
}
val btnFragmentOne = findViewById<Button>(R.id.btnFragment1)
val btnFragmentTwo = findViewById<Button>(R.id.btnFragment2)
btnFragmentOne.setOnClickListener {
supportFragmentManager.beginTransaction().apply {
replace(R.id.flFragment, firstFragment)
addToBackStack(null)
commit()
}
}
btnFragmentTwo.setOnClickListener {
supportFragmentManager.beginTransaction().apply {
replace(R.id.flFragment, secondFragment)
addToBackStack(null)
commit()
}
}
}
}
我正在使用 addToBackStack() 函数来确保当有人按下 fragment2 按钮并且之后他们按下返回按钮时显示 fragment1。它运行良好。
但是当我按下 fragment2 按钮 5 次时。我必须按返回按钮 5 次才能到达 fragment1。
如何在再次添加之前检查片段是否已经在堆栈中?
解决方案
当您将其添加到堆栈中时,每次按下按钮时都会添加它。
因此,如果您按 Fragment2 按钮 5 次,它会被添加 5 次到堆栈中,并且您需要按 5 次后退按钮才能从堆栈中删除所有 5 个按钮并返回到 Fragment1
您需要编辑代码,以便如果片段已经存在,则不应再次将其添加到堆栈中
推荐阅读
- math - 给定行列式 a 和 b 时如何在 2x2 矩阵中查找元素
- tableau-api - Tableau 地理制图不显示整个地图
- android - 一个 LiveData 返回 null
- java - 为什么包装器整数值和实际 int 值在变量查看器中显示不同(在 Netbeans 调试模式下)?
- discord - 如何从机器人脚本向频道发送游戏邀请(丰富的存在游戏邀请)?
- python - 如何用 Numpy 而不是 Pandas 计算满足条件的总和
- python - Python for 循环 - 我可以从循环内的条件集中跳过多次迭代吗?
- android - CollapseAppbar + Image Overlay(系统主题)
- java - Javax.swing 和 Java.awt 冲突
- c++ - C++ - 形式的变体的流/cout
>