Я работаю над android нативным приложением, и у меня есть некоторые проблемы с altert dialog
внутри моего adapter
. Основной activity
содержит fragment
, который, в свою очередь, содержит recyclerView
, с которым связан adapter
. recyclerView
содержит несколько элементов, и в каждом из них есть кнопка, которая позволяет вызвать диалоговое окно с предупреждением. Когда выполняется процесс вставки контента и после него появляется ошибка «Невозможно добавить окно - токен недействителен; ваша деятельность выполняется?» Появляется. и диалоговое окно предупреждения (код) не появляется.
Код моего адаптера:
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.state.setOnClickListener {
if (result_info_feridas!!.result!![position].isClosed == true.toString()) {
alertDialogConfirmProcess("abrir", position, holder.state, context)
} else {
alertDialogConfirmProcess("fechar", position, holder.state, context)
}
}
}
Диалоговое окно моего предупреждения:
private fun alertDialogConfirmProcess(state: String?, position: Int, stateButton: Button, context: Context) {
var response: Boolean?
val alertDialog = AlertDialog.Builder(view.rootView.context)
if (state == "fechar") {
alertDialog.setMessage(view.rootView.context.resources.getString(R.string.confirm_close_wound))
} else {
alertDialog.setMessage(view.rootView.context.resources.getString(R.string.confirm_open_wound))
}
alertDialog.setPositiveButton(view.rootView.context.resources.getString(R.string.sim)) { dialog, which ->
stateButton.isClickable = false
response = if (state == "fechar") {
closeWound(result_info_feridas!!.result!![position].intervention!![0].woundId, ObjectToken.accessToken).closeWoundRequest()
} else {
openWound(result_info_feridas!!.result!![position].intervention!![0].woundId, ObjectToken.accessToken).openWoundRequest()
}
if (response == true) {
if (state == "fechar") {
alertDialogResponseState(view.rootView.context.resources.getString(R.string.photo_closed_success))
} else {
alertDialogResponseState(view.rootView.context.resources.getString(R.string.photo_opened_success))
}
if (seeClosedWounds == true) {
updateResultWoundsInfo(result_info_feridas!!.result!![position].patientId!!, "All")
} else {
updateResultWoundsInfo(result_info_feridas!!.result!![position].patientId!!, "Opened")
}
} else {
stateButton.isClickable = true
alertDialogResponseState(view.rootView.context.resources.getString(R.string.erro))
}
dialog!!.dismiss()
}
alertDialog.setNegativeButton(view.rootView.context.resources.getString(R.string.nao)) { dialog, which ->
dialog!!.dismiss()
}
stateButton.isClickable = true
/* val dialog = alertDialog.create();*/
alertDialog.show()
}