2014-02-07 3 views
2

У меня есть активность (MainActivity), которая содержит фрагмент (FragmentA) с ArrayList<Uri> array_list = new ArrayList<Uri>();. Как моя MainActivity может получить ссылку на этот массив?Получение переменной ссылки от фрагмента к активности

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

Я использую ViewPager. У меня нет идентификатора фрагмента.

+1

интерфейс использования как обратный вызов активности – Raghunandan

+0

@ Raghunandan - можете ли вы привести пример? – luwionline

+0

проверьте http://developer.android.com/guide/components/fragments.html связь с активностью с помощью обратных вызовов. Например, есть документы – Raghunandan

ответ

2

Here является хорошим Tuto:

Define an Interface then implement it in the activity

Для разрешить Fragment сообщать до его Activity, вы можете определить интерфейс в классе Fragment и реализовать его в Activity. Фрагмент фиксирует реализацию интерфейса во время его жизненного цикла onAttach() и затем может вызвать методы интерфейса для связи с Activity.

-1

Просто введите ArrayList array_list = new ArrayList(); как статическая переменная типа
public static ArrayList array_list = new ArrayList(); и назовите этот массив из вашего MainActivity как FragmentA.array_list.

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

1

Возможно, самый чистый способ, которым вы можете это сделать, - это использовать FragmentManager для извлечения прикрепленного фрагмента в действие, а затем вызвать getMyList() на этом фрагменте, чтобы получить список, который вы хотите.

FragmentA fr = (FragmentA) getFragmentManager().findFragmentById(R.id.my_fragment_a_id); 
if(fr != null) { 
    List<Uri> list = fr.getMyList(); 
    // ... do some fun stuff 
} 

Обратите внимание, что это не очень хорошая практика, чтобы сохранить ссылку на фрагмент из-за FragmentManager из-за жизненный цикл активности (вы в конечный итоге со ссылкой на фрагмент, который уже собран, или вы можете предотвратить эффективную память очистка GC).

+0

Это самое простое и элегантное решение для доступа к переменным фрагмента. Спасибо! –

Смежные вопросы