Я хочу передать большие данные из рабочего менеджера в мой фрагмент, не используя место - PullRequest
0 голосов
/ 17 июня 2019

Я хочу передать список, полученный из API-запроса менеджера работы, моему фрагменту, чтобы я мог обновить адаптер утилиты восстановления.Я не хочу использовать Room, так как список больше 10 Кб, но вместо этого я использую runOnUIThread, чтобы я мог передать их.Я получил экземпляр фрагмента с помощью findFragmentByTag, но я не знаю, как лучше всего передать список адаптеру

Вот мой код: Пожалуйста, помогите мне:)

try {
        val groupsResponse = client.groups().execute()
        if (!groupsResponse.isSuccessful) return result

        val list = groupsResponse.body()!!

        activity?.runOnUiThread {

            activity as ViewPagerActivity

            val viewPager = activity.findViewById<ViewPager>(R.id.view_pager)
            val fragment = activity.supportFragmentManager.findFragmentByTag(
                "android:switcher:" +
                        R.id.view_pager + ":" + viewPager.currentItem
            )


             //how to pass data to adapter?

        }


        Result.SUCCESS


    } catch (exception: Exception) {
        exception.printStackTrace()
        result = Result.FAILURE


    }

Ответы [ 2 ]

1 голос
/ 17 июня 2019

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

Но вы не должны делать это таким образом. При изменении конфигурации фрагмент будет воссоздан. Таким образом, вы должны использовать ViewModel, и ViewModel передаст данные фрагменту. https://developer.android.com/topic/libraries/architecture/viewmodel

0 голосов
/ 19 июня 2019

Вы пытаетесь получить экземпляры действий и фрагменты внутри вашего рабочего класса?Если так, пожалуйста, не делайте этого - это не будет работать должным образом.Весь смысл WorkManager в том, что ваша работа может выполняться в фоновом режиме, когда ваш пользовательский интерфейс на переднем плане не активирован, то есть все эти вещи могут быть нулевыми.

Вместо этого в своем фрагменте наблюдайте за состоянием вашего работника:получить соответствующий вывод.https://developer.android.com/topic/libraries/architecture/workmanager/how-to/states-and-observation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...