文档章节

安卓java.lang.IllegalArgumentException: The observer is null.解决方案

htq
 htq
发布于 2016/07/26 09:38
字数 508
阅读 5
收藏 0
点赞 0
评论 0

刚刚在调试自己的APP项目的时候报错java.lang.IllegalArgumentException: The observer is null.,而之前是可以运行通过,所以百思不得其解,后来在网上查找相关资料,终于弄明白是咋回事,现在记录如下,一来算是积累调错方面的知识,二来或许可以帮到出现同样错误的人。

出错的主要原因是在ViewPager中使用到了GridView这样的控件,当销毁包含该ViewPager控件的Activity时,如切换Fragment或Activity或退出应用,则会报java.lang.IllegalArgumentException: The observer is null.的错误,主要原因是GridView使用的是适配器模式来显示视图,采用观察者模式来更新视图,在移除View时会调用BaseAdapter.unregisterDataSetObserver方法,所以如果GridView在移除View时如果对同一个View移除多次,则会报java.lang.IllegalArgumentException: The observer is null.错误。解决方案很简单,只需在GridView的适配器类中重写unregisterDataSetObserver方法,在其中加一个判空语句即可,注意该错误同样适用于ListView,因为ListView同样使用的是适配器模式。

错误代码如下:

java.lang.IllegalArgumentException: The observer is null.
	at android.database.Observable.unregisterObserver(Observable.java:64)
	at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42)
	at android.widget.AbsListView.onDetachedFromWindow(AbsListView.java:2872)
	at android.view.View.dispatchDetachedFromWindow(View.java:11908)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2647)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)
	at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)
	at android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:2685)
	at android.view.ViewRootImpl.doDie(ViewRootImpl.java:4044)
	at android.view.ViewRootImpl.die(ViewRootImpl.java:4027)
	at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:375)
	at android.view.WindowManagerImpl$CompatModeWrapper.removeViewImmediate(WindowManagerImpl.java:170)
	at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3352)
	at android.app.ActivityThread.access$1200(ActivityThread.java:140)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1266)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:137)
	at android.app.ActivityThread.main(ActivityThread.java:4914)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:575)
	at dalvik.system.NativeStart.main(Native Method)


解决代码如下:

public class GridViewAdapter extends SimpleAdapter {

	public GridViewAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from,
			int[] to) {
		super(context, data, resource, from, to);
		// TODO Auto-generated constructor stub
	}
	@Override
	public void unregisterDataSetObserver(DataSetObserver observer) {
		if (observer != null) {
	        super.unregisterDataSetObserver(observer);
	    }
	}
}
即在自己适配器类中重写unregisterDataSetObserver方法,在其中加一个判空语句,如果observer不为空,才调用super.unregisterDataSetObserver(observer);语句。


本文转载自:http://blog.csdn.net/htq__/article/details/51290641

共有 人打赏支持
htq

htq

粉丝 19
博文 67
码字总数 1007
作品 3
武汉
关于Dialog引起的报错“未附加到窗口管理器”

报错信息 java.lang.IllegalArgumentException:View = DecorView @ 9af1e8f [] is not attached to window manager java.lang.IllegalArgumentException:View = DecorView @ 9af1e8f []未附......

王先森oO ⋅ 05/21 ⋅ 0

Android 内存泄露的几中场景

title: Android 内存泄露的几中场景 date: 2016-11-22 13:57 tags: Android Android 内存泄漏 java 存在一个垃圾回收机制,发生泄漏的原因就是应该被回收的垃圾没有被回收,这种情况就叫做内...

WooiiiWooiii ⋅ 2016/12/21 ⋅ 0

Android官方架构组件之LiveData + ViewModel + Room 源码分析一

简单使用案例: MainActivity: MessageViewModel: 其中viewModel.getMessageObserver().observe(this, new Observer() ) 中的this即SupportActivity :LifecycleOwner SupportActivity im......

编程之乐 ⋅ 05/23 ⋅ 0

Android技能树 — Rxjava取消订阅小结(1):自带方式

前言: Android技能树系列: Android基础知识 Android技能树 — 动画小结 Android技能树 — View小结 Android技能树 — Activity小结 Android技能树 — View事件体系小结 Android技能树 — ...

青蛙要fly ⋅ 05/29 ⋅ 0

Android Architecture Components 之LiveData, ViewModel

一 入口 阅读源码需要从源码的入口处着手,先看先官方的例子(https://developer.android.com/topic/libraries/architecture/livedata): ViewModel 里面有一个LiveData数据和getLivedata方法...

nothingwxq ⋅ 05/22 ⋅ 0

解决API<8时引发的AlerDialog is not created – java.lan...

解决API<8时引发的AlerDialog is not created - java.lang.IllegalArgumentException: Activity#onCreateDialog did not create a dialog for id 1 报错:java.lang.IllegalArgumentExceptio......

zhengguogaun ⋅ 2013/06/19 ⋅ 0

[翻译] Android Architecture 之 LiveData

LiveData是一个可观察的数据持有类,不像通常的可观察者,LiveData是可感知生命周期的,这意味着LiveData只更新处于活动生命周期状态的组件中的观察者。 LiveData更新的话只会通知处于活动状...

小菜鸟程序媛 ⋅ 06/06 ⋅ 0

解决JNI在Windows环境下因长路径导致编译失败问题

之前听一个朋友反馈LuaScriptoCore在Windows下编译会报错,今天特意跑到Windows环境下测试了一番,果然是存在问题。得到了下面的编译报错信息: Build command failed. Error while executin...

杰嗒嗒的阿杰 ⋅ 05/04 ⋅ 0

Android插件化原理(一)Activity插件化

相关文章 Android深入四大组件系列 Android解析AMS系列 Android解析ClassLoader系列 前言 四大组件的插件化是插件化技术的核心知识点,而Activity插件化更是重中之重,Activity插件化主要有三...

刘望舒 ⋅ 05/29 ⋅ 0

Android 性能优化:手把手教你优化Bitmap图片资源的使用

前言 在 开发中,性能优化策略十分重要 本文主要讲解性能优化中的Bitmap 使用优化,希望你们会喜欢 目录 1. 优化原因 即 为什么要优化图片资源,具体如下图:

Carson_Ho ⋅ 04/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java软件工程师简历中项目经验怎么写?

作者:暗灭 链接:https://www.zhihu.com/question/20695310/answer/180691302 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 直接给你贴个我自己的简历...

颖伙虫 ⋅ 30分钟前 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部