【发布时间】:2013-04-01 09:20:05
【问题描述】:
我在 ViewPager 上有 5 个片段(它们一直都在内存中,onPause() 等在包含的 Activity 在屏幕上时永远不会被调用)。
无论如何,我需要根据另一个片段 (TimetableListFragment) 中发生的情况来更新一个片段 (GroupsListFragment)。为此,我正在使用 LocalBroadcastManager 和 BroadcastReceiver。
现在进入相关部分。 注册广播 Intent(严重缩写):
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() 从未被解雇)。
对可能是罪魁祸首的任何建议?
【问题讨论】:
-
updategroupsreciever 是什么样的?编辑:NVM,可能不相关......但我假设你的日志语句检查了?
-
你在 onPause() 中为 GroupsListFragment 做了什么? b/c 你说 GroupsListFragment 可能会在此时暂停。另外,此时它曾经出现在屏幕上吗?
-
我假设,把 this.registerReceiver(BroadCastReceiver, IntentFilter);在 onCreate() 方法中尝试
标签: android android-intent broadcastreceiver intentfilter