2012-04-01 21 views
0

ViewPagerに5つのフラグメントがあります(これらはすべて常にメモリ内にあり、onPause()が含まれています。カスタムBroadcastReceiverはブロードキャストを受信しません

とにかく、別のもの(TimetableListFragment)で起こっていることに応じて、1つのフラグメント(GroupsListFragment)を更新する必要があります。私はLocalBroadcastManagerとBroadcastReceiverを使っています。

これ以降、関連する部分について説明します。

public class GroupsListFragment extends Fragment { 
     @Override 
     public void onResume() { 
      super.onResume(); 
      mBroadcastManager = LocalBroadcastManager.getInstance(getActivity()); 
      mBroadCastReceiver = new UpdateGroupsReceiver(this); 
      IntentFilter iFilter = new IntentFilter(UpdateGroupsReceiver.UPDATE_TIMETABLE_ACTION); 
      Log.d("GroupsListFragment", "Registering for receiver with intentfilter:[action=" + iFilter.getAction(0) + "]"); 
      mBroadcastManager.registerReceiver(mBroadCastReceiver, iFilter); 
     } 
} 

(再び厳しく略す)放送の送信:(重度略す)ブロードキャストインテントの登録

public class TimetableListFragment extends Fragment { 
    public void updateStatus() { 
     Intent intent = new Intent(UpdateGroupsReceiver.UPDATE_TIMETABLE_ACTION); 
     mBroadcastManager.sendBroadcast(intent); 
     Log.d(TAG, "Sending broadcast with intent:[action=" + intent.getAction() + "]"); 
    } 
} 

問題は私のUpdateGroupsReceiverは決してそれを受けていないということですが(onReceive()が解雇されることはありません) 。

犯人の可能性についてアドバイスしますか?私はこのコードを使用しています

+0

updategroupsrecieverはどのようになっていますか?編集:NVM、おそらく関連性は...しかし、私はあなたのログステートメントをチェックアウトすると仮定しますか? – JRaymond

+0

GroupsListFragmentのonPause()で何をしますか?この時点でGroupsListFragmentが一時停止されている可能性があります。また、現時点で**画面に**表示されていますか? – JRaymond

+0

私は、this.registerReceiver(BroadCastReceiver、IntentFilter)を置くと仮定します。 onCreate()メソッドで試してみてください – Selva

答えて

0

@Override 
public void onResume() { 
    super.onResume(); 
    if (myReceiver == null) { 
     myReceiver = new UpdateGroupsReceiver(this); 
     IntentFilter filter = new IntentFilter(
       UpdateGroupsReceiver.UPDATE_TIMETABLE_ACTION); 
     registerReceiver(myReceiver, filter); 
    } 
} 

public void updateStatus() { 
    Intent intent = new Intent(); 
    intent.setAction(UpdateGroupsReceiver.UPDATE_TIMETABLE_ACTION); 
    sendBroadcast(intent); 
} 

testappBroadCastTesthttps://github.com/k3b/EzTimeTracker/で発見することができrunnig最小限の例を動作していること。

関連する問題