#java #android #kotlin
#java #Android #kotlin
Вопрос:
впервые задавая вопрос здесь, надеюсь, я получу ответ 🙂 Я новичок в Kotlin, я программирую на C более 3 лет, и только сейчас я перешел на мобильные приложения, поэтому мой вопрос таков: я пытаюсь создать диалоговое окно внутри фрагмента, которое позволяет пользователю вставлять текст свободного поля. когда он нажимает кнопку «Плюс», должно открыться диалоговое окно с текстовой областью свободного поля, которая позволяет ему вставлять текст, а затем нажимать «Добавить» или «Отменить», когда я запускаю программу, все, что я вижу в диалоговом окне, — это кнопки «Добавить» и «Отмена», но я не вижу саму панель текстового поля.
но когда я меняю представление с fragment_view на dialog_view, я вижу панель текстового поля. (я надеюсь, что я был ясен в объяснении моей проблемы) это мой фрагмент кода (fragment_shopping_list):
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_shopping_list, container, false)
val addItem_button = view.findViewById<com.google.android.material.floatingactionbutton.FloatingActionButton>(R.id.fab_shoppiglist)
addItem_button.setOnClickListener {
val dialog = AlertDialog.Builder(getContext())
val tempView = inflater.inflate(R.layout.dialog_shoppinglist,null )
dialog.setPositiveButton("Add"){ _: DialogInterface, _: Int ->
}
dialog.setNegativeButton("Cancel"){ _: DialogInterface, _: Int->
}
dialog.show()
}
return view
}
и это мой диалоговый код (dialog_shoppinglist):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@ id/et_Itemlist"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
Ответ №1:
val dialog = context?.let { AlertDialog.Builder(it) }
dialog?.setView(R.layout.dialog_shoppinglist)
dialog?.setPositiveButton("Add"){ _: DialogInterface, _: Int ->
}
dialog?.setNegativeButton("Cancel"){ _: DialogInterface, _: Int->
}
dialog?.show()
Комментарии:
1. пожалуйста, добавьте минимальное описание того, что делает код.
Ответ №2:
Попробуйте это:
val tempView = inflater.inflate(R.layout.dialog_shoppinglist, null)
val dialog = AlertDialog.Builder(getContext())
.setPositiveButton("Add"){ _: DialogInterface, _: Int ->
}.setNegativeButton("Cancel"){ _: DialogInterface, _: Int->
}.create()
dialog.show()
dialog.window!!.setContentView(tempView)
// the following is optional
dialog.window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
dialog.window!!.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM)
Добавьте это одним нажатием кнопки:
val text = tempView.findViewById<EditText>(R.id.et_Itemlist).text.toString
И вы можете получить текст, который вы ввели в диалоговом окне.
Комментарии:
1. Спасибо, что пытались помочь. я попробовал ваше решение, и компилятор не распознал диалоговое окно. окно!! но я заметил, что я не добавил метод dialog.setView () теперь, когда я добавил метод dialog.setView, я вижу панель текстового поля в моем диалоговом окне. еще раз спасибо за ваше внимание, хороший сайт, я буду использовать это сообщество для консультаций и решения других проблем в будущем, ти, и хорошего дня
2. @sean Я забыл это: val dialog = AlertDialog. Конструктор (getContext()).create()