Android и API результатов фрагментов. Как поделиться результатом дочернего фрагмента с другим ключом запроса?

Я пытаюсь реализовать API результатов фрагментов в своем приложении. Мне нужно показать DialogFragment внутри фрагмента и отправить результат из фрагмента диалога во фрагмент при нажатии кнопок диалога. Итак, в моем фрагменте диалога при нажатии кнопки я делаю что-то вроде этого:

        setFragmentResult(requestKey, bundleOf(RESULT to result))

И я пытаюсь получить результат в своем фрагменте внутри:

        childFragmentManager.setFragmentResultListener(requestKey, this) { _, bundle ->
        val result = bundle.getInt(DialogFragment.RESULT)
       // some code
    }

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

То есть диалог внутри фрагмента может открываться в разных случаях. И мне нужно различать эти случаи. Для этого я отправляю во фрагмент диалога другой ключ запроса. Но как мне при получении результата во фрагменте отличить этот результат по ключу. Если я сделаю это внутри метод.

То есть я хочу сделать что-то вроде этого:

       childFragmentManager.setFragmentResultListener(requestKey, this) { requestKey, bundle ->
            when(requestKey) {
                "FIRST_CASE" -> { // some code }
                "SECOND_CASE" -> { // some code }  
          }
        }

Но я не понимаю, как это можно реализовать, если этот метод ( ) уже требует в качестве аргумента. Откуда я должен это взять?

Если бы мой был статическим, я бы создал константу внутри фрагмента диалога и использовал ее. Но мой является динамическим.

Помогите мне, пожалуйста. В интернете не нашел подходящего для меня примера. И на данный момент я не понимаю, как это можно реализовать в контексте чистой архитектуры с MVVM.

PS Вот пример того, что я хочу реализовать: Фрагмент, который содержит две кнопки (например, , ). При нажатии на каждую из кнопок открывается фрагмент диалога с другим текстом. Внутри диалога также есть кнопка, по нажатию которой результат переносится на фрагмент. Мне нужно обработать этот результат по-разному, в зависимости от того, какая кнопка была нажата на фрагменте (А или Б). Для этого я хотел различать по ключу запроса.

0 ответов

Другие вопросы по тегам