#android
#Android
Вопрос:
В моей основной деятельности, когда пользователь нажимает кнопку, он показывает ему конкретный фрагмент. Но если он снова нажмет на него, он добавит еще один экземпляр в backstack. И затем пользователю нужно нажать назад много раз, как нажать на кнопку.
class AppActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_app)
SharedPreferenceHelper.init(this)
GRPCClient.init(this)
DataBaseHelper.init(this)
imageViewDot.setOnClickListener {
findNavController(this, R.id.navHostFragmentApp).navigate(R.id.syncFragment)
}
}}
Как я могу предотвратить это. Что мне нужно сделать, так это то, что если фрагмент виден, кнопка ничего не сделает.
Комментарии:
Ответ №1:
попробуйте отметить, что вы уже добавили этот фрагмент, и не делайте этого снова
class AppActivity : AppCompatActivity() {
var navigated: Boolean = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_app)
SharedPreferenceHelper.init(this)
GRPCClient.init(this)
DataBaseHelper.init(this)
imageViewDot.setOnClickListener {
if(navigated) return
findNavController(this, R.id.navHostFragmentApp).navigate(R.id.syncFragment)
navigated = true
}
}
override fun onBackPressed() {
super.onBackPressed() // removes from back stack if present in there
navigated = false
}
}
или вы можете использовать getBackStackEntry
или getCurrentBackStackEntry
из NavController
экземпляра, чтобы проверить, что это Fragment
уже на позиции