How can via kotlin mapOf map buttons key to value?

133 Views Asked by At

How can via Kotlin mapOf map buttons key to value? I have such code.

reference to start_button is correct, by clickin on it I can open corect button in xml, but in debug mode buttonsMap value (start_button) is null.

class StartDialog : DialogFragment(){
private val buttonsMap: Map<String, Button> by lazy(LazyThreadSafetyMode.NONE) {
        mapOf(
            "startButton" to start_button
        )
    }

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val dialog = Dialog(requireContext())

        dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
        dialog.setContentView(R.layout.start_dialog)
        
        displayButtons(Wrapper(requireContext())
        return dialog
}

private fun displayButtons(wrapper: Wrapper) {
        wrapper.queryButtons(object : Wrapper.OnQueryButtonListener {
            override fun onSuccess(buttons: List<ButtonDetails>) {
                buttons.forEach { button ->
                    buttonsMap[button.key]?.apply {
                        text = "${button.description}"
                        setOnClickListener {
                            wrapper.startProcess(requireActivity(), button)
                        }
                    }
                }
            }
        })
    }
}

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/start_button"
android:layout_width="300dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginTop="15dp" 
android:gravity="center"
android:textColor="@color/ef_white"
android:text="Start"
android:textSize="16sp">
0

There are 0 best solutions below