В самом начале моего приложения у меня появляется диалоговое окно, в котором пользователь может выбрать один из двух вариантов:
Код, из которого язапуск диалога выглядит следующим образом:
override fun onStart() {
super.onStart()
popup.show(supportFragmentManager, "example d")
Log.d("TAG", "THIS SHOULD BE RUN AFTER I HAVE CLICKED ONE OF THE DIALOGUE BUTTONS")
checkSharedPreference()
switcher()
}
Проблема в том, что код не останавливается на popup.show(supportFragmentManager, "example d")
.Он продолжает работать.Я предполагаю, что это связано с асинхронностью диалога, нет?Как мне это решить?Completionhandler
?Asynctask
?Что-то еще?
ОБНОВЛЕНИЕ Я пытался построить часы в соответствии с тем, что @ Акшай Паливал сказал:
class MainActivity : AppCompatActivity() {
public fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val context = applicationContext
val sharedPreference = context.getSharedPreferences(
"key", Context.MODE_PRIVATE)
val builder = AlertDialog.Builder(applicationContext)
builder.setTitle("Välkommen till Demensvård utan tvång.")
.setMessage("Berätta vem du är.")
.setPositiveButton("Anhörig") { dialog, which ->
val version = "anhorig"
sharedPreference.edit().putString("version", version).apply()
checkSharedPreference()
switcher()
}
.setNegativeButton("Personal") { dialog, which ->
val version = "personal"
sharedPreference.edit().putString("version", version).apply()
checkSharedPreference()
switcher()
}
return builder.create()
}
override fun onStart() {
super.onStart()
//THIS? doesn't work...
onCreateDialog(WHAT BUNDLE???)
//OR THIS?
onCreateDialog(what bundle?).show(supportFragmentManager, "example d")
}
How do I call the `onCreateDialog` function? `onCreateDialog(WHAT BUNDLE???)` what bundle should be passed? `onCreateDialog(what bundle?).show(supportFragmentManager, "example d")` Again what bundle?
Или мне нужноесть onCreateDialog
в отдельном классе, который расширяет AppCompatDialogFragment
?В таком случае я могу позвонить main.switcher
из обратного вызова в этом классе?