У меня есть навигация по дну с 3 фрагментами (меню).Но если мы нажмем кнопку (включая кнопку навигации внизу), пока приложение все еще извлекает данные, приложение будет аварийно завершено.
Я попытался выполнить поиск по этой проблеме в google и stackoverflow.Но это только делает фрагмент неприкосновенным, а не как с нижней навигацией.
MainActivity.kt
private val onNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.navigation_home -> {
replaceFragment(HomeFragment())
return@OnNavigationItemSelectedListener true
}
R.id.navigation_account -> {
replaceFragment(AccountFragment())
return@OnNavigationItemSelectedListener true
}
R.id.navigation_other -> {
replaceFragment(OtherFragment())
return@OnNavigationItemSelectedListener true
}
}
false
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
nav_view.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener)
replaceFragment(HomeFragment())
FirebaseMessaging.getInstance().isAutoInitEnabled = true
}
private fun replaceFragment(fragment: Fragment) {
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.fragmentContainer, fragment)
fragmentTransaction.commit()
}
HomeFragment.kt
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View = inflater.inflate(R.layout.fragment_home, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
lrMath.setOnClickListener {
val matematikaIntent = Intent(requireActivity(), MathActivity::class.java)
requireActivity().startActivity(matematikaIntent)
}
fetchUser()
}
.
.
.
private fun fetchUser() {
val uid = FirebaseAuth.getInstance().currentUser?.uid
val ref = FirebaseDatabase.getInstance().getReference("/users")
ref.addListenerForSingleValueEvent(object : ValueEventListener {
@SuppressLint("SetTextI18n")
override fun onDataChange(p0: DataSnapshot) {
p0.children.forEach {
val user = it.getValue(User::class.java)
if (user != null && uid == user.uid) {
textGreetings = "Hi " + user.name + ","
Picasso.get().load(user.profileImageUrl).into(profile_button)
greetings_textview.text = textGreetings
flag = 1
}
}
}
override fun onCancelled(p0: DatabaseError) {
}
}
)
}
Я хочу сделать всепросмотр / неприкосновенность экрана, пока данные не извлечены.Так что сбоев не будет.