В текущем сценарии возможны два подхода для отправки данных во фрагмент.
Первый подход:
Вы можете зарегистрировать BroadcastReceiver для действия, которое размещаетФрагмент и после получения данных в onReceive()
вы можете вызвать метод Fragment
из Activity
, как показано ниже:
ExampleFragment fragment = (ExampleFragment)getFragmentManager().
findFragmentById(R.id.example_fragment);
fragment.<specific_function_name_of_that_fragment>();
Подход второй:
Вы можете напрямую зарегистрировать BroadcastReceiver во Fragment, а затем вызвать метод фрагмента, определенный там, как показано ниже:
private final BroadcastReceiver broadCastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//receive your data here
}
};
, а затем в onCreateView()
Зарегистрировать BroadcastReceiver во Fragment следующим образом:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(broadCastReceiver,
new IntentFilter("YOUR.INTENT.FILTER"));
return inflater.inflate(R.layout.fragment_sub_categories, container, false);
}
и затем в onDestroyView()
unRegister BroadcastReceiver во фрагменте, подобном следующему:
@Override
public void onDestroyView() {
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(broadCastReceiver);
super.onDestroyView();
}
Имейте в виду:
Жизненный цикл фрагмента будет играть здесь важную роль.Для получения Трансляции Ваш Фрагмент должен быть Создан и видим для Пользователя.Когда фрагмент будет уничтожен или не виден пользователю, вы не получите трансляцию.