Как подключиться к одному и тому же загрузчику из другого объекта/фрагмента, кроме того, в котором он был запущен?
Вы не должны повторное Loader
s, что в настоящее время управляются с помощью LoaderManager
экземпляра по кратному Activity
с и Fragment
с.
LoaderManager
будет запускать/останавливать эти Loader
S относительно жизненного цикла Activity
/Fragment
, так что нет никакого способа гарантировать, что эти Loader
s будет существовать, как только вы находитесь в другом Activity
.
Из документации:
LoaderManager.LoaderCallbacks является интерфейс обратного вызова, которая позволяет клиенту взаимодействовать с LoaderManager.
Погрузчики, в частности CursorLoader, должны сохранить свои данные после остановки. Это позволяет приложениям сохранять свои данные в рамках действий или методов onStop() и onStart(), поэтому , когда пользователи возвращаются в приложение, им не нужно ждать данных для перезагрузки. Вы используете методы LoaderManager.LoaderCallbacks , когда нужно знать, когда создавать новый загрузчик, и сообщать приложению , когда пришло время прекратить использование данных загрузчика.
Другими словами, часто бывает, что ваши Loader
s будут специфичны для некоторых видов деятельности (или фрагмента). Когда у вас есть Activity
реализация интерфейса LoaderManager.LoaderCallbacks
, ваша деятельность дается тип LoaderManager.LoaderCallbacks
.Каждый раз, когда вы вызываете initLoader(int ID, Bundle args, LoaderCallbacks<D> callback)
, LoaderManager создает или повторно использует Loader
, который является специфическим для некоторого экземпляра интерфейса LoaderManager.LoaderCallbacks
(который в этом случае является экземпляром вашей деятельности). Это по существу связывает вашу активность с загрузчиком, и ее методы обратного вызова будут вызваны как состояние состояния загрузчика.
Это, как говорится, если вы не можете найти способ, чтобы ваши два отдельных Activitys один и те же методы обратного вызова, я сомневаюсь, что это чистый способ сделать это (т.е. имеющей активность и фрагмент разделяет одни и те же функции обратного вызова звучит как это было бы сложно, если не невозможно). Я бы не стал беспокоиться об этом слишком много. Во всем примере кода, который я когда-либо видел, я никогда не видел, чтобы две операции и/или Фрагменты использовали одни и те же методы обратного вызова. Кроме того, учитывая, что Activity
s и Fragment
s должны быть предназначены для повторного использования, совместное использование Loader
s таким образом просто не похоже на то, что было бы поощрено.
вы можете объяснить, почему вам нужно ссылаться на «загрузчик» как в «Фрагменте», так и в его родительской «Деятельности»? имейте в виду, что рекомендуется создавать ваши «Фрагменты» для повторного использования ... все может стать довольно беспорядочным, если вы начнете переплетать явное поведение ваших «Активность» и «Фрагмент ... старайтесь выполнять как можно большую работу в каждом классе отдельно, а затем при необходимости применяйте методы обратного вызова «Активность». –
, что, как говорится, я дам вам возможность объяснить ваши рассуждения, прежде чем я начну звучать слишком педантично: P –
О нет, вы неправильно поняли. Это не его родительская деятельность! Это совсем другое занятие. Смысл вопроса остался бы таким же, если бы я спросил о двух фрагментах. ** Как повторно использовать один загрузчик в двух разных фрагментах? ** Просто я использую фрагмент внутри некоторого Activity для списка и MapActivity для карты, я подумал, что, возможно, это имеет значение, но я так не думаю. –