Фрагменты и широковещательные приемники

У меня есть activity с двумя fragments . Я не использую теги <fragment/> , у меня есть два класса, которые расширяют Fragment , в этом фрагменте у меня есть:

  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.bfragment, container, false); // this will inflate the Fragment in activity. } 

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

Один из моих широковещательных приемников, определенный в моей основной характеристике:

 private BroadcastReceiver bcReceived = new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent intent) { Log.d("", "BC Object Received"); ActionBar actionbar = getActionBar(); actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.Tab bTab = actionbar.newTab().setText("B"); Fragment fragment = new BFragment(); bTab.setTabListener(new MyTabsListener(fragment)); actionbar.addTab(bTab, true); final LinearLayout linearLayout = (LinearLayout) findViewById(R.id.bTable); // Getting null pointer exception here. linearLayout is not getting initialized. 

Я хочу использовать вышеперечисленное linearLayout и использовать его для раздувания представления. Но получить NPE.

Здесь, когда некоторые широковещательные приемники обновляют первый фрагмент, он работает правильно, но когда широковещательный приемник обновляет второй фрагмент из активности, я получаю NPE.

Мой вопрос: как и где следует обновлять фрагмент? Должно ли это быть внутри моей деятельности? Если да, то в каком методе? Если нет, то где я должен обновить фрагмент?

Пожалуйста, помогите мне!!!

Логика активности должна быть отделена от логики фрагментов.

Ваша деятельность должна обрабатывать логику следующим образом:

Мне нужно отобразить этот фрагмент вместо этого

Но ваша деятельность не должна обрабатывать такую ​​логику:

Мне нужно обновить то, что находится внутри фрагмента

Ответственность фрагмента заключается в обновлении его содержимого. С другой стороны, активность может сообщить фрагменту, что он должен обновить сам.

Имея это в виду, ваши фрагменты должны выставлять такие методы, как

 updateContent(With Blabla) 

ИЛИ

 updateContent() 

В своей деятельности, когда BroadcastReceiver получает что-то, вы должны:

  • Проверьте, какой фрагмент отображается в настоящий момент
  • Подготовьте содержимое для обновления в фрагменте
  • Попросите фрагмент обновить с помощью updateContent(With Blabla) .

ИЛИ

  • Проверьте, какой фрагмент отображается в настоящий момент
  • Попросите фрагмент обновить себя с помощью updateContent() .

Выбирайте самый простой метод в соответствии с бизнес-логикой приложения.