#android #xml #kotlin #android-edittext #android-alertdialog
#Android #xml #kotlin #android-edittext #android-alertdialog
Вопрос:
Я создал AlertDialog, который в основном содержит два EditTexts для ввода данных (идентификатор компонента, имя компонента).Когда пользователь нажимает кнопку «Да» в диалоговом окне оповещения, в базу данных добавляется новый компонент (на данный момент я не добавил никаких прослушивателей щелчков для кнопок «Да» и «Нет» в диалоговом окне), но по какой-то причине я не могу получить данные из текста редактирования. Я новичок в разработке приложений для Android, пожалуйста, помогите мне, ребята…..Заранее спасибо 🙂
Примечание: 1. Я использую ViewModel.установите флажок, чтобы AlertDialog оставался постоянным при поворотах.
- Метод onCancel() просто отменяет AlertDialog (я намерен использовать это для обновления определенных параметров).
Это код kotlin, который создает диалоговые окна оповещения.
fun onAddComponent()
{
val builder = AlertDialog.Builder(requireActivity())
builder?.setTitle("New Component Info")
val inflater = requireActivity().layoutInflater
builder?.setView(inflater.inflate(R.layout.new_comp, null))
builder?.setPositiveButton(R.string.Okay_button){ dialogInterface, which->
viewModel.flag = false
val editText : EditText? = compAlert?.findViewById(R.id.new_Component)
println(editText.toString())
}
builder?.setNegativeButton(R.string.NO){ dialogInterface, which->
viewModel.flag = false
}
compAlert= builder?.create()
compAlert?.setOnCancelListener{OnCancel()}
viewModel.flag = true
compAlert?.show()
}
Это макет xml, который я раздул в onAddComponent ()
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@ id/new_Component"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="comp Id"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@ id/new_component_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:ems="10"
android:hint="comp name"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="@ id/new_Component"
app:layout_constraintStart_toStartOf="@ id/new_Component"
app:layout_constraintTop_toBottomOf="@ id/new_Component" />
</androidx.constraintlayout.widget.ConstraintLayout>
Ответ №1:
Чтобы получить текст внутри EditText, который вам нужно выполнить editText.getText().toString()
, а НЕ editText.toString()
тот, который у вас есть в вашем коде.
В вашем коде editText.toString()
будет возвращено строковое представление объекта EditText. Смотрите Документацию toString()
по методу String здесь .
Комментарии:
1. Да … я сделал это только сейчас .. Я понял это после публикации вопроса, и тип ввода в коде xml должен быть changed..it работает нормально.. большое спасибо