六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 93|回复: 0

关于 Receiver not registered: android.widget.ViewFlipper$1@43ad65f8

[复制链接]

升级  48.67%

31

主题

31

主题

31

主题

秀才

Rank: 2

积分
123
 楼主| 发表于 2013-1-29 22:32:40 | 显示全部楼层 |阅读模式
目前在一个使用了 ViewFlipper 的项目中遇到如下的错误, 该出错信息出现在 system.log 中
 
02-21 10:22:52.111 I/UsageStats( 1657): Unexpected resume ofcom.pekall.weatherwidget while already resumed in com.pekall.weatherwidget02-21 10:22:53.321 E/AndroidRuntime( 1848): FATAL EXCEPTION: main02-21 10:22:53.321 E/AndroidRuntime( 1848): java.lang.IllegalArgumentException:Receiver not registered: android.widget.ViewFlipper$1@43ad65f802-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.app.ActivityThread$PackageInfo.forgetReceiverDispatcher(ActivityThread.java:793)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.app.ContextImpl.unregisterReceiver(ContextImpl.java:814)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:331)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.widget.ViewFlipper.onDetachedFromWindow(ViewFlipper.java:104)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.view.View.dispatchDetachedFromWindow(View.java:6033)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1158)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1156)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1156)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1156)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1156)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.view.ViewRoot.dispatchDetachedFromWindow(ViewRoot.java:1630)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.view.ViewRoot.doDie(ViewRoot.java:2671)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.view.ViewRoot.die(ViewRoot.java:2641)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:218)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.view.Window$LocalWindowManager.removeViewImmediate(Window.java:436)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3704)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3809)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.app.ActivityThread.access$2400(ActivityThread.java:125)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.app.ActivityThread$H.handleMessage(ActivityThread.java:2041)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.os.Handler.dispatchMessage(Handler.java:99)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.os.Looper.loop(Looper.java:123)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atandroid.app.ActivityThread.main(ActivityThread.java:4647)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atjava.lang.reflect.Method.invokeNative(Native Method)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atjava.lang.reflect.Method.invoke(Method.java:521)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)02-21 10:22:53.321 E/AndroidRuntime( 1848):     atdalvik.system.NativeStart.main(Native Method)02-21 10:22:53.381 W/ActivityManager( 1657):   Force finishing activitycom.pekall.weatherwidget/.clock.ClockConfigureActivity02-21 10:22:53.691 I/WindowManager( 1657): Setting rotation to 3, animFlags=102-21 10:22:53.711 I/ActivityManager( 1657): Config changed: { scale=1.0imsi=460/0 loc=zh_CN touch=3 keys=1/1/2 nav=1/1 orien=2 layout=18 uiMode=17seq=6}02-21 10:22:53.971 W/ActivityManager( 1657): Activity pause timeout forHistoryRecord{43d44f30 com.pekall.weatherwidget/.clock.ClockConfigureActivity} 引用自http://iwangpeng.com/viewflipper-receiver-not-registered-error/ 写道
<div class="quote_div">在 Adroid2.1 和 Adroid2.2 设备上,如果 Activity 中使用到 ViewFlipper 控件,进行横竖屏切换操作时会发生如下错误信息

java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper$1@43dee3c0

这是由于 onDetachedFromWindow() 莫名其妙地在 onAttachedToWindow() 之前被调用了。据说是一个 Bug ,不知在最新的 2.3 上是否修正。

下面提供一个很简单的解决方案,重写 ViewFlipper 的 onDetachedFromWindow() 方法

@Override
protected void onDetachedFromWindow () {
    try {
        super.onDetachedFromWindow();
    }
    catch (IllegalArgumentException e) {
        stopFlipping();
    }
}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表