Отправка родительского представления дочернему (BottomSheetDialogFragment)

#kotlin #bottom-sheet #android-bottomsheetdialog #bottomsheetdialogfragment

#kotlin #нижняя таблица #android-bottomsheetdialog #bottomsheetdialogfragment

Вопрос:

сегодня мне интересно, возможно ли это сделать. Я имею в виду, когда я загружаю дочерний вид, отправляю родительский вид. Другими словами, я хочу обрабатывать родительский элемент, когда я нахожусь на дочернем элементе.

Родительский вид

   imgFilter.setOnClickListener {
            MyDialogFragment().show(requireActivity().supportFragmentManager,"filter_dialog")
        }
 

Дочерний вид

 class MyDialogFragment : BottomSheetDialogFragment() {
    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    val dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog

    val view = View.inflate(context, R.layout.filter_sheet_layout, null)

    val linearLayout = view.findViewById<LinearLayout>(R.id.root)
    val params = linearLayout.layoutParams as LinearLayout.LayoutParams
    params.height = getScreenHeight()
    linearLayout.layoutParams = params

    backArrowClick(view)
    hideKeyboard()


    dialog.setContentView(view)
    mBehavior = BottomSheetBehavior.from(view.parent as View)

    parentFragment?.view?.findViewById<TextView>(R.id.name_store)?.text = "Hello World"

    return dialog
}
}
 

Я не знаю, возможно ли это сделать, или если у вас есть другое предложение, я здесь, чтобы услышать и изучить.

Большое вам спасибо!

Комментарии:

1. parentFragment?.view это то, что вам нужно?

2. parentFragment = null:c

3. Попробуйте с MyDialogFragment().show(childFragmentManager, "filter_dialog")

4. БОЛЬШОЕ ВАМ СПАСИБО, ВЫ СДЕЛАЛИ МОЙ ДЕНЬ

5. Хотите вернуть услугу, проголосовав за ответ?

Ответ №1:

Проблема show в том, что метод получает в качестве аргумента диспетчер фрагментов из действия, поэтому он не может найти родительский фрагмент

 MyDialogFragment().show(childFragmentManager, "filter_dialog")
 

Должно позволять parentFragment?.view? находить.