遇到了一个难缠的问题,搜了N天的没有解决:

07-02 15:40:25.415: D/LocateService(6711): onLocationChanged: AMapLocation location =Location[lbs 0.000000,0.000000 acc=0 t=?!? et=?!? {Bundle[{adcode=, citycode=, desc=}]}]
07-02 15:40:25.425: D/AMapLocateListener(6711): onLocationChanged: location = Location[lbs 0.000000,0.000000 acc=0 t=?!? et=?!? {Bundle[{adcode=, citycode=, desc=}]}]
07-02 15:40:25.475: I/AuthFailure(6711): INVALID_USER_SCODE
07-02 15:40:29.105: D/GatewayPresentor(6711): logout: component = push
07-02 15:40:29.105: D/GatewayComponent(6711): logout
07-02 15:40:29.105: W/GatewayComponent(6711): mLogged = false, mSender = com.autonavi.connector.clientsdk.Sender@432462d8
07-02 15:40:29.105: D/WorkOrderFragment(6711): onDetach
07-02 15:40:29.105: D/OrderFragment(6711): onDetach
07-02 15:40:29.115: D/GatewayPresentor(6711): login: component = push, accessKey = 2, userId = 2, token = 5ad04ba7-de02-4203-a077-a79581c89252
07-02 15:40:29.115: D/GatewayComponent(6711): login: accessKey = 2, userId = 2, token = 5ad04ba7-de02-4203-a077-a79581c89252
07-02 15:40:29.115: I/Sender(6711): 生成消息号:6166812093405200387
07-02 15:40:29.125: D/ReadableDatabaseHelper(6711): query: distinct = false, table = TWorkOrder, columns = null, selection = create_time >= datetime('2015-07-02 15:38:29'), selectionArgs = null, groupBy = null, having = null, orderBy = null, limit =null
07-02 15:40:29.125: D/OrderFragment(6711): onAttach
07-02 15:40:29.155: D/AndroidRuntime(6711): Shutting down VM
07-02 15:40:29.155: W/dalvikvm(6711): threadid=1: thread exiting with uncaught exception (group=0x4173cd58)
07-02 15:40:29.155: E/AndroidRuntime(6711): FATAL EXCEPTION: main
07-02 15:40:29.155: E/AndroidRuntime(6711): Process: com.autonavi.taoparking.parker, PID: 6711
07-02 15:40:29.155: E/AndroidRuntime(6711): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.autonavi.taoparking.parker/com.autonavi.taoparking.parker.ManageOrderActivity}: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.HorizontalScrollView$SavedState
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2190)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2239)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3730)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.app.ActivityThread.access$900(ActivityThread.java:141)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.os.Handler.dispatchMessage(Handler.java:102)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.os.Looper.loop(Looper.java:136)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.app.ActivityThread.main(ActivityThread.java:5047)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at java.lang.reflect.Method.invokeNative(Native Method)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at java.lang.reflect.Method.invoke(Method.java:515)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:806)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at dalvik.system.NativeStart.main(Native Method)
07-02 15:40:29.155: E/AndroidRuntime(6711): Caused by: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.HorizontalScrollView$SavedState
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.widget.HorizontalScrollView.onRestoreInstanceState(HorizontalScrollView.java:1659)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.view.View.dispatchRestoreInstanceState(View.java:12810)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2637)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2643)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2643)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.view.View.restoreHierarchyState(View.java:12788)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1744)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.app.Activity.onRestoreInstanceState(Activity.java:955)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.app.Activity.performRestoreInstanceState(Activity.java:927)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1138)
07-02 15:40:29.155: E/AndroidRuntime(6711):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)
07-02 15:40:29.155: E/AndroidRuntime(6711):     ... 12 more
07-02 15:40:31.695: I/Sender(6711): ..............发送心跳
07-02 15:40:31.825: I/Sender(6711): 重试连接到服务器
07-02 15:40:31.885: W/System.err(6711): java.net.ConnectException: failed to connect to /120.26.196.74 (port 10000): connect failed: ECONNREFUSED (Connection refused)
07-02 15:40:31.885: W/System.err(6711):     at libcore.io.IoBridge.connect(IoBridge.java:114)
07-02 15:40:31.885: W/System.err(6711):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
07-02 15:40:31.885: W/System.err(6711):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
07-02 15:40:31.885: W/System.err(6711):     at java.net.Socket.startupSocket(Socket.java:566)
07-02 15:40:31.885: W/System.err(6711):     at java.net.Socket.tryAllAddresses(Socket.java:128)
07-02 15:40:31.885: W/System.err(6711):     at java.net.Socket.<init>(Socket.java:178)
07-02 15:40:31.885: W/System.err(6711):     at java.net.Socket.<init>(Socket.java:150)
07-02 15:40:31.885: W/System.err(6711):     at com.autonavi.connector.clientsdk.ClientContext$1.run(ClientContext.java:74)
07-02 15:40:31.885: W/System.err(6711):     at java.lang.Thread.run(Thread.java:841)
07-02 15:40:31.885: W/System.err(6711): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
07-02 15:40:31.885: W/System.err(6711):     at libcore.io.Posix.connect(Native Method)
07-02 15:40:31.885: W/System.err(6711):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
07-02 15:40:31.885: W/System.err(6711):     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
07-02 15:40:31.885: W/System.err(6711):     at libcore.io.IoBridge.connect(IoBridge.java:112)
07-02 15:40:31.885: W/System.err(6711):     ... 8 more
07-02 15:40:31.885: W/Sender(6711): failed to connect to /120.26.196.74 (port 10000): connect failed: ECONNREFUSED (Connection refused)
07-02 15:40:41.695: I/Sender(6711): ..............发送心跳
07-02 15:40:41.885: I/Sender(6711): 重试连接到服务器
07-02 15:40:41.945: W/GatewayComponent(6711): mLogAction = LOGIN, failure: code = -2004, message = 发送消息没有回执确认
07-02 15:40:41.945: D/GatewayService(6711): mLocationLog.onFailed: code = -2004, message = 发送消息没有回执确认
07-02 15:40:41.945: W/System.err(6711): java.net.ConnectException: failed to connect to /120.26.196.74 (port 10000): connect failed: ECONNREFUSED (Connection refused)
07-02 15:40:41.945: W/System.err(6711):     at libcore.io.IoBridge.connect(IoBridge.java:114)
07-02 15:40:41.945: W/System.err(6711):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
07-02 15:40:41.945: W/System.err(6711):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
07-02 15:40:41.945: W/System.err(6711):     at java.net.Socket.startupSocket(Socket.java:566)
07-02 15:40:41.945: W/System.err(6711):     at java.net.Socket.tryAllAddresses(Socket.java:128)
07-02 15:40:41.945: W/System.err(6711):     at java.net.Socket.<init>(Socket.java:178)
07-02 15:40:41.945: W/System.err(6711):     at java.net.Socket.<init>(Socket.java:150)
07-02 15:40:41.945: W/System.err(6711):     at com.autonavi.connector.clientsdk.ClientContext$1.run(ClientContext.java:74)
07-02 15:40:41.945: W/System.err(6711):     at java.lang.Thread.run(Thread.java:841)
07-02 15:40:41.945: W/System.err(6711): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
07-02 15:40:41.945: W/System.err(6711):     at libcore.io.Posix.connect(Native Method)
07-02 15:40:41.945: W/System.err(6711):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
07-02 15:40:41.945: W/System.err(6711):     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
07-02 15:40:41.945: W/System.err(6711):     at libcore.io.IoBridge.connect(IoBridge.java:112)
07-02 15:40:41.945: W/System.err(6711):     ... 8 more
07-02 15:40:41.945: W/Sender(6711): failed to connect to /120.26.196.74 (port 10000): connect failed: ECONNREFUSED (Connection refused)
07-02 15:40:43.935: W/GatewayComponent(6711): mLogAction = LOGIN, failure: code = -2004, message = 发送消息没有回执确认
07-02 15:40:43.935: D/GatewayService(6711): mPushLog.onFailed: code = -2004, message = 发送消息没有回执确认

网上大部分人都说是因为同一个页面(Activity),不同的View使用了相同的ID,导致在恢复时,findViewById,强制转换SaveState类型错误,可是我对比了半天整个工程中就一个SlidingTabLayout(继承HorizontalScrollView)使用了android:id="@+id/slidingTabLayout",应该不是网友说的这种情况,但是我也不知道为什么传的AbsSavedState$1给HorizontalScrollView,无奈去翻源码:

    @Overrideprotected void onRestoreInstanceState(Parcelable state) {if (mContext.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.JELLY_BEAN_MR2) {// Some old apps reused IDs in ways they shouldn't have.// Don't break them, but they don't get scroll state restoration.super.onRestoreInstanceState(state);return;}SavedState ss = (SavedState) state;super.onRestoreInstanceState(ss.getSuperState());mSavedState = ss;requestLayout();}

大概意思就是在Android API 18(4.2.2和4.4.2之间的一个版本)以前,不会保存ScrollView的滚动条位置,这个对我影响也不是很大,规避这个问题我能想到有如下两种:

  1. 将AndroidMainifest.xml中android:targetSdkVersion降为18以下(如果需要记录这个状态,可以在onSaveInstanceState中记录位置,onRestoreInstanceState中恢复就可以了);

  2. 不让View保存状态:

    android:saveEnabled="false"|setSaveEnabled(false)|不要给view设置id

/*** Called by {@link #saveHierarchyState(android.util.SparseArray)} to store the state for* this view and its children. May be overridden to modify how freezing happens to a* view's children; for example, some views may want to not store state for their children.** @param container The SparseArray in which to save the view's state.** @see #dispatchRestoreInstanceState(android.util.SparseArray)* @see #saveHierarchyState(android.util.SparseArray)* @see #onSaveInstanceState()*/
protected void dispatchSaveInstanceState(SparseArray<Parcelable> container) {if (mID != NO_ID && (mViewFlags & SAVE_DISABLED_MASK) == 0) {mPrivateFlags &= ~PFLAG_SAVE_STATE_CALLED;Parcelable state = onSaveInstanceState();if ((mPrivateFlags & PFLAG_SAVE_STATE_CALLED) == 0) {throw new IllegalStateException("Derived class did not call super.onSaveInstanceState()");}if (state != null) {// Log.i("View", "Freezing #" + Integer.toHexString(mID)// + ": " + state);container.put(mID, state);}}
}

转载于:https://blog.51cto.com/lbrant/1670280

View onRestoreInstanceState ClassCastException相关推荐

  1. CoordinatorLayout 之深入理解

    上篇在对 CoordinatorLayout 作了一些简单介绍,以了解 CoordinatorLayout 带来的一些特性和常见用途.本篇将对 CoordinatorLayout 的源码进行一些分析, ...

  2. Android LayoutInflater 源码解析

    在上篇文章中我们学习了setContentView的源码,还记得其中的LayoutInflater吗?本篇文章就来学习下LayoutInflater. @Overridepublic void set ...

  3. 红橙Darren视频笔记 手写ButterKnife(Android Studio4.2.2 gradle-6.7.1 )

    ButterKnife的github地址 https://github.com/JakeWharton/butterknife 1.ButterKnife的使用 第一步 在moudle的gradle配 ...

  4. 红橙Darren视频笔记 IOC注解框架 了解xUtils3与ButterKnife的原理

    1.什么是IOC IOC是Inversion of Control的缩写,直接翻译过来就叫依赖反转,看起来感觉不明觉厉,我觉得IOC就是一种解耦方式.比如原本我们在Activity中findviewb ...

  5. 深入理解ButterKnife源码并掌握原理(三)

    上两篇我们分析完了处理器的process方法的findAndParseTargets方法来获取了一个集合,该集合包含了你使用注解的类的TypeElement和这个类中的注解的实例BindingClas ...

  6. 侧滑、、、mark一下、、、

    本文由 孙国威 原创.如需转载,请注明出处! 最近项目要做一个QQ5.0的侧滑菜单效果,和传统的侧滑菜单存在着一些差异.想必大家都已经见识过了. 为了不重复发明轮子,先去github上面搜索了一番. ...

  7. Android:This usually happens when two views of different type have the same id in the same hierarchy

    这个崩溃于旋转屏幕的时候, 从纵向布局切换到横向布局的时候发生: java.lang.IllegalArgumentException: Wrong state class, expecting Vi ...

  8. 万能的APT!编译时注解的妙用

    转载自:http://zjutkz.net/2016/04/07/万能的APT!编译时注解的妙用/ 本篇文章会带你了解什么是注解,注解的用法和分类,并且从knight和butterKnife的使用方式 ...

  9. Android FlowLayout流式布局

    最近使用APP的时候经常看到有 这种流式布局 ,今天我就跟大家一起来动手撸一个这种自定义控件. 首先说一下自定义控件的流程: 自定义控件一般要么继承View要么继承ViewGroup View的自定义 ...

最新文章

  1. 欢迎大家踊跃报名担当“讲师”
  2. 重置npm设置_密码重置用户流程4部曲
  3. Dubbo管理控制台dubbo-admin搭建
  4. Mysql事务,并发问题,锁机制-- 幻读、不可重复读--专题
  5. TP5 验证-内置规则
  6. 一个简单的空间配置器
  7. Linux下的时间戳
  8. 一个很有趣的游戏(看谁的名字打架厉害)
  9. VB.NET实现文件上传下载
  10. 去了一趟少林寺 竟然发现...
  11. 功能性测试方法和流程
  12. Latex表格制作记录
  13. java神经网络该怎么训练_浅谈训练神经网络的五大算法
  14. 提升网站权重优化方法,网站权重优化步骤
  15. UI设计可供性解析:巧用隐藏的设计力提升用户体验
  16. db 分贝 增益 什么意思 多少倍
  17. 洛谷P4683 [IOI2008] Type Printer 题解
  18. 计算机硬件 平面图,看懂室内平面图画法、平面配置原则,一次了解常见的平面图种类!...
  19. 07.显示系统:第005课_Vsync机制:第004节_surface使用vsync过程代码分析
  20. JMS入门(一)--JMS基础

热门文章

  1. python requests_小白学 Python 爬虫(18):Requests 进阶操作
  2. 【总结】循序渐进,有三AI不得不看的技术综述(超过100篇核心干货)
  3. 【技术综述】一文道尽softmax loss及其变种
  4. 中国工业节能减排产业项目盈利模式及投资风险预警报告2021-2027年
  5. 全球及中国水深测量声呐行业应用前景及未来投资决策建议报告2022-2027年
  6. 中国啤酒设备行业运营效益分析与发展现状调研报告2021-2027年
  7. 0X8009310B (ASN:276) win7安装证书时出现错误消息:找不到与此证书文件相关联的证书申请微软官方文档
  8. 【VB.NET】自定义控件(一)属性说明
  9. oracle mysql 数据验证工具_Oracle Orion tool check io(ORACLE Orion 工具查看以及校验IO)
  10. openresty开发系列37--nginx-lua-redis实现访问频率控制