我是靠谱客的博主 羞涩戒指,最近开发中收集的这篇文章主要介绍Caused by: java.lang.IllegalArgumentException:Receiver not registered: 解决办法,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
看到Receiver就确定是广播引起的啦。贴上问题代码:
直接创建一个Receiver对象
private BroadcastReceiver systemBR= new BroadcastReceiver() {
@Override
public void onReceive(Contextcontext, Intent intent) {
if (null!= intent) {
}
}
};
在onCreateView注册广播
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); filter.addAction(LoginManager.ACTION_LOGOUT); activity.registerReceiver(systemBR, filter);
}
在onDestroy注销广播
@Override public void onDestroy() { super.onDestroy();
try {
if (null != systemBR) { unregisterReceiver(systemBR); } } catch (IllegalArgumentException e) { Lg.e(e); } }
类在还没registerReceiver执行ondestory中的 unregisterReceiver这情况是可能的,假如在onCreate有比较耗时的动作还没registerReceiver然后ondestory就会出现此情况,按照这思路BroadcastReceiver就不能在类初始化后就创建对象(比onCreate还之前)。修改后代码:
private BroadcastReceiver systemBR;
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); filter.addAction(LoginManager.ACTION_LOGOUT);
systemBR = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (null != intent) {
} } };
activity.registerReceiver(systemBR, filter);
}
问题解决。
最后
以上就是羞涩戒指为你收集整理的Caused by: java.lang.IllegalArgumentException:Receiver not registered: 解决办法的全部内容,希望文章能够帮你解决Caused by: java.lang.IllegalArgumentException:Receiver not registered: 解决办法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复