Я хочу создать диалоговое окно с предупреждением, как показано ниже:
Я могу создать диалоговое окно с предупреждением, используя код ниже:
private fun openDataEntryDialog(title: String, description: String) {
val mBuilder = AlertDialog.Builder(mContext)
val mView = layoutInflater.inflate(R.layout.dialog_entry_data,null)
mBuilder.setView(mView)
val dataEntryDialog = mBuilder.create()
val titleTextView : TextView = mView.findViewById(R.id.textView_title_data_entry_dialog)
val descriptionTextView : TextView = mView.findViewById(R.id.textView_description_data_entry_dialog)
val cancelTextView : TextView = mView.findViewById(R.id.textView_cancel_action_entry_data_dialog)
val changeTextView : TextView = mView.findViewById(R.id.textView_change_action_entry_data_dialog)
titleTextView.text = title
descriptionTextView.text = description
cancelTextView.setOnClickListener {
dataEntryDialog.dismiss()
}
changeTextView.setOnClickListener {
dataEntryDialog.dismiss()
}
dataEntryDialog.show()
}
но на самом деле я хочу создать класс, который будет обрабатывать этот диалог оповещения, как когда я создаю модальный нижний лист, и из этого класса я буду приводить данные с использованием интерфейса (слушателя)
этот код ниже является отдельным классом при создании модального нижнего листа
class UserControlModalBottomSheet : BottomSheetDialogFragment() {
lateinit var mListener : UserControlModalBottomSheetListener
fun setListener(listener: UserControlModalBottomSheetListener) {
mListener = listener
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.modal_bottom_sheet_user_control, container, false)
val helpUsTextView : TextView = view.findViewById(R.id.textView_help_us_user_control_modal_bottom_sheet)
val settingsTextView : TextView = view.findViewById(R.id.textView_setting_user_control_modal_bottom_sheet)
val editProfileTextView : TextView = view.findViewById(R.id.textView_edit_profile_user_control_modal_bottom_sheet)
helpUsTextView.setOnClickListener {
mListener.onHelpUsSectionClicked()
dismiss()
}
editProfileTextView.setOnClickListener {
mListener.onEditProfileSectionClicked()
dismiss()
}
settingsTextView.setOnClickListener {
mListener.onSettingSectionClicked()
dismiss()
}
return view
}
}
и затем во фрагменте я могу использовать этот класс, как показано ниже:
private fun openBottomSheetDialog() {
val fragManager = fragmentManager ?: return
val bottomSheet = UserControlModalBottomSheet()
bottomSheet.setListener(object:
UserControlModalBottomSheetListener {
override fun onHelpUsSectionClicked() {
val helpUsDestination = UserControlFragmentDirections.actionToHelpUs()
Navigation.findNavController(fragmentView).navigate(helpUsDestination)
}
override fun onEditProfileSectionClicked() {
val editProfileDestination = UserControlFragmentDirections.actionToEditProfile()
Navigation.findNavController(fragmentView).navigate(editProfileDestination)
}
override fun onSettingSectionClicked() {
val settingsDestination = UserControlFragmentDirections.actionToSettings()
Navigation.findNavController(fragmentView).navigate(settingsDestination)
}
})
bottomSheet.show(fragManager,"UserControlFragment")
}
так, как сделать диалоговое окно настраиваемого оповещения в отдельном Java-файле, как показано выше? Я новичок в Android, и кажется, что все учебники не делают это в отдельном Java-файле
вот xml диалогового окна:
<?xml version="1.0" encoding="utf-8"?>
<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="wrap_content"
android:background="@color/colorBackgroundDark">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content" android:id="@+id/textView_title_data_entry_dialog"
tools:text="Title Data Entry"
android:textColor="@android:color/black"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
android:layout_marginTop="16dp" app:layout_constraintTop_toTopOf="parent" android:textAlignment="center"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content" android:id="@+id/textView_description_data_entry_dialog"
android:textColor="@android:color/black"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/textView_title_data_entry_dialog"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="32dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="32dp" android:maxLines="2" tools:text="This is the description of data entry."
app:layout_constraintHorizontal_bias="0.495" android:textAlignment="center"/>
<EditText
android:layout_width="0dp"
android:layout_height="35dp"
android:background="@drawable/rectangle_outline"
android:inputType="textPersonName"
android:maxLines="1"
android:ems="10"
android:id="@+id/editText_input_data_dialog_entry_data" android:layout_marginStart="32dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginEnd="32dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/textView_description_data_entry_dialog"
android:paddingStart="8dp" android:paddingEnd="8dp"/>
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:id="@+id/view_horizontal_entry_data_dialog"
android:background="@color/colorLine"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/editText_input_data_dialog_entry_data"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<TextView
android:text="Batal"
android:layout_width="0dp"
android:layout_height="35dp"
app:layout_constraintWidth_percent="0.5"
android:id="@+id/textView_cancel_action_entry_data_dialog"
android:gravity="center"
android:textAlignment="center"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText_input_data_dialog_entry_data"
android:layout_marginTop="16dp"/>
<TextView
android:text="Ubah"
android:layout_width="0dp"
android:layout_height="35dp"
app:layout_constraintWidth_percent="0.5"
android:id="@+id/textView_change_action_entry_data_dialog"
android:gravity="center"
android:textAlignment="center"
app:layout_constraintStart_toEndOf="@+id/textView_cancel_action_entry_data_dialog"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText_input_data_dialog_entry_data"
android:layout_marginTop="16dp"/>
<View
android:layout_width="1dp"
android:layout_height="49dp"
android:id="@+id/view_vertical_entry_data_dialog"
android:background="@color/colorLine"
app:layout_constraintEnd_toStartOf="@+id/textView_change_action_entry_data_dialog"
app:layout_constraintStart_toEndOf="@+id/textView_cancel_action_entry_data_dialog"
app:layout_constraintTop_toBottomOf="@+id/view_horizontal_entry_data_dialog"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Ява в порядке