Я пытаюсь настроить фрагмент диалога с текстовым представлением, и после щелчка использовать намерение для запуска операции автозаполнения. Когда место выбрано, текстовое представление показывает адрес.
В onCreateDialog у меня есть следующий код
binding.dialogLocationText.setOnClickListener {
val fields =
listOf(Place.Field.ID, Place.Field.ADDRESS, Place.Field.NAME)
val intent = Autocomplete.IntentBuilder(
AutocompleteActivityMode.OVERLAY, fields
).build(context!!)
startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE)
}
Поскольку доступ к текстовому просмотру осуществляется через привязку данных, я не могу получить к нему доступ напрямую в onActivityResult, поэтому созданы private lateinit var dialogLocationText: TextView
и dialogLocationText = binding.dialogLocationText
. Затем установите текст в:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
val place = Autocomplete.getPlaceFromIntent(data!!)
dialogLocationText.text = place.address
}
else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
// TODO: Handle the error.
}
}
}
Вышеуказанное не выглядит хорошей практикой, особенно с избыточной ссылкой на текстовое представление, и мне интересно, могу ли я по-другому конструировать, чтобы следовать MVVM.
Спасибо за помощь.