Android: Доступ к объекту активности контейнера из фрагмента с помощью putExtra?
Я создаю интерфейс вкладки, используя панель действий и фрагмент. Мне понадобится помощь в отправке данных из активности контейнера в фрагмент.
Чтобы уточнить, у меня есть объект задания в активности контейнера. И я создал несколько вкладок на основе информации в объекте задания (например, сведения о компании, опыт и т.д.). Мне нужно передать объект задания этим фрагментам, чтобы он мог отображать соответствующую информацию.
Я создал операцию с контейнером и фрагменты вкладок. Мне нужен пример того, как передать объект через них. Я не могу использовать aim.putExtra. Можно ли получить доступ к родительскому объекту-контейнеру из фрагмента?
Любая помощь должна быть оценена.
Спасибо.
Ответы
Ответ 1
Сделайте способ в вашей деятельности, например getJob
, который вернет объект Job
и его информацию
MyActivity extends Activity{
Job mJob;
public Job getJob(){
return this.mJob;
}
}
то в своем фрагменте вы выполните следующее:
MyFragment extends Fragment{
@Override
public void onActivityCreated(){
super.onActivityCreated();
((MyActivity)this.getActivity()).getJob();
}
}
используйте getActivity
и метод getJob();
, чтобы получить объект
Ответ 2
Существует несколько способов достижения этого.
- Создайте переменную
static
, чтобы хранить ваши данные и получать доступ к этим данным изнутри фрагментов - это самый быстрый, но при неправильном использовании они создают плохие шаблоны проектирования.
- Здесь вы найдете способ
Fragment-to-Fragment communication possible through the parent Activity
: http://developer.android.com/training/basics/fragments/communicating.html Вы можете использовать пример кода, чтобы просто сделать Activity - Fragment data send
.
- Ответ на главный проголосовавший здесь: Доступ к экземпляру родительской активности? упоминает
a way to avoid using static data
(1.) и содержит примеры исходного кода, используя ActivityGroup
"Если вам нужен доступ к некоторым значениям в вашем первом действии без статически ссылаясь на него, вы можете деятельности в ActivityGroup."
То, что вы выбираете, является вашим предпочтением, это всего лишь несколько вариантов!
Редактирование: я не уверен, что номер 3 будет работать с фрагментами, так как я не тестировал метод, подобный ему, примером является взаимодействие Activity - Activity.