edit: 2020.4.12 правильная опечатка из Button.performClick () в button.performClick ()
Я пишу приложение, которое должно отображать spla sh страницу / фрагмент в течение нескольких секунд при запуске затем отобразите следующий фрагмент в navgraph. В navgraph есть семь фрагментов, которые я могу перемещаться по этим фрагментам очень хорошо.
Проблема связана с фрагментом spla sh, я могу получить фрагмент spla sh только для отображения / раздувания, когда button.onClickListener
установлен, чтобы принять ручной ввод пользователя -> щелчок. (против использования button.performClick()
)
Желаемым конечным результатом является отображение макета фрагмента, состоящего из представления изображения и текста, в течение нескольких секунд при запуске приложения до отображения следующего макета фрагмента в навигационном графе, без имея пользователя, чтобы щелкнуть или нажать что-нибудь. Я пытался использовать threadleep, runnable с обработчиком, и даже некоторое время l oop с executeClick (). Ни один из которых не дал приемлемых результатов. Наиболее близким к достижению желаемого результата является следующее:
class SplashFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater,
rootContainer: ViewGroup?,
savedInstanceState: Bundle?): View {
return inflater.inflater(R.layout.fragment_splash, rootContainer, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
button.setOnClickListener {
updateABode()
}
// pizzaLoop initialized to give about 4 seconds delay
val pizzaLoop = 1500000000
while (pizzaLoop > 0) {
pizzaLoop--
if (pizzaLoop == 0) {
button.performClick()
}
}
private fun updateABode {
val ABode = "A" // hard coded for testing purposes
when (ABode) {
"B" -> // for testing purposes only -- does nothing
"A" -> findNavController().navigate(R.id.action_splashFragment_to_firmwareFragment)
}
}
}
При установленной pizzaL oop фрагмент spla sh не будет раздуваться, но я вижу задержку через прошивку обновление экрана. (фактически все, что я получаю, это белый пустой экран, тогда последующие вызовы класса SplashFragment не показывают ничего, кроме экрана firmwareFragment (следующий на navgraph) - и задержка pizzaL oop заметна).
Когда я закомментируйте pizzaL oop, затем фрагмент spla sh отобразится, как и предполагалось, но мне нужно нажать кнопку, чтобы вызвать следующий фрагмент в navgraph (остальная часть navgraph работает нормально).
Это как метод button.performClick () предотвращает надувание фрагмента spla sh.