view中setImportantForAccessibility调用时莫名其妙的空指针异常
来源:互联网 发布:当代传播 大数据 高涛 编辑:程序博客网 时间:2024/05/30 23:00
如下:
E/AndroidRuntime(11807): FATAL EXCEPTION: main
E/AndroidRuntime(11807): java.lang.NullPointerException
E/AndroidRuntime(11807): at com.android.launcher2.HideFromAccessibilityHelper.restoreImportantForAccessibilityHelper(HideFromAccessibilityHelper.java:68)
E/AndroidRuntime(11807): at com.android.launcher2.HideFromAccessibilityHelper.onChildViewRemoved(HideFromAccessibilityHelper.java:102)
E/AndroidRuntime(11807): at android.view.ViewGroup.onViewRemoved(ViewGroup.java:3371)
E/AndroidRuntime(11807): at android.view.ViewGroup.removeDetachedView(ViewGroup.java:3939)
E/AndroidRuntime(11807): at android.widget.AbsListView.access$5700(AbsListView.java:93)
E/AndroidRuntime(11807): at android.widget.AbsListView$RecycleBin.pruneScrapViews(AbsListView.java:6800)
E/AndroidRuntime(11807): at android.widget.AbsListView$RecycleBin.scrapActiveViews(AbsListView.java:6779)
E/AndroidRuntime(11807): at android.widget.GridView.layoutChildren(GridView.java:1273)
E/AndroidRuntime(11807): at android.widget.AbsListView.onLayout(AbsListView.java:2037)
E/AndroidRuntime(11807): at android.view.View.layout(View.java:14099)
E/AndroidRuntime(11807): at android.view.ViewGroup.layout(ViewGroup.java:4464)
E/AndroidRuntime(11807): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021)
E/AndroidRuntime(11807): at android.view.View.layout(View.java:14099)
E/AndroidRuntime(11807): at android.view.ViewGroup.layout(ViewGroup.java:4464)
E/AndroidRuntime(11807): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
E/AndroidRuntime(11807): at android.view.View.layout(View.java:14099)
E/AndroidRuntime(11807): at android.view.ViewGroup.layout(ViewGroup.java:4464)
E/AndroidRuntime(11807): at com.android.launcher2.ShortcutAndWidgetContainer.onLayout(ShortcutAndWidgetContainer.java:124)
E/AndroidRuntime(11807): at android.view.View.layout(View.java:14099)
E/AndroidRuntime(11807): at android.view.ViewGroup.layout(ViewGroup.java:4464)
E/AndroidRuntime(11807): at com.android.launcher2.CellLayout.onLayout(CellLayout.java:1031)
E/AndroidRuntime(11807): at android.view.View.layout(View.java:14099)
E/AndroidRuntime(11807): at android.view.ViewGroup.layout(ViewGroup.java:4464)
E/AndroidRuntime(11807): at com.android.launcher2.PagedView.onLayout(PagedView.java:680)
E/AndroidRuntime(11807): at com.android.launcher2.Workspace.onLayout(Workspace.java:1358)
E/AndroidRuntime(11807): at android.view.View.layout(View.java:14099)
E/AndroidRuntime(11807): at android.view.ViewGroup.layout(ViewGroup.java:4464)
E/AndroidRuntime(11807): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
E/AndroidRuntime(11807): at com.android.launcher2.DragLayer.onLayout(DragLayer.java:410)
E/AndroidRuntime(11807): at android.view.View.layout(View.java:14099)
E/AndroidRuntime(11807): at android.view.ViewGroup.layout(ViewGroup.java:4464)
E/AndroidRuntime(11807): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
E/AndroidRuntime(11807): at android.view.View.layout(View.java:14099)
E/AndroidRuntime(11807): at android.view.ViewGroup.layout(ViewGroup.java:4464)
E/AndroidRuntime(11807): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
E/AndroidRuntime(11807): at android.view.View.layout(View.java:14099)
E/AndroidRuntime(11807): at android.view.ViewGroup.layout(ViewGroup.java:4464)
E/AndroidRuntime(11807): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1670)
E/AndroidRuntime(11807): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1528)
E/AndroidRuntime(11807): at android.widget.LinearLayout.onLayout(LinearLayout.java:1441)
E/AndroidRuntime(11807): at android.view.View.layout(View.java:14099)
E/AndroidRuntime(11807): at android.view.ViewGroup.layout(ViewGroup.java:4464)
E/AndroidRuntime(11807): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
E/AndroidRuntime(11807): at android.view.View.layout(View.java:14099)
E/AndroidRuntime(11807): at android.view.ViewGroup.layout(ViewGroup.java:4464)
E/AndroidRuntime(11807): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2183)
E/AndroidRuntime(11807): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1947)
E/AndroidRuntime(11807): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139)
E/AndroidRuntime(11807): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4879)
E/AndroidRuntime(11807): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776)
E/AndroidRuntime(11807): at android.view.Choreographer.doCallbacks(Choreographer.java:579)
E/AndroidRuntime(11807): at android.view.Choreographer.doFrame(Choreographer.java:548)
E/AndroidRuntime(11807): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762)
E/AndroidRuntime(11807): at android.os.Handler.handleCallback(Handler.java:725)
E/AndroidRuntime(11807): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(11807): at android.os.Looper.loop(Looper.java:153)
E/AndroidRuntime(11807): at android.app.ActivityThread.main(ActivityThread.java:5299)
E/AndroidRuntime(11807): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(11807): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(11807): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
E/AndroidRuntime(11807): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
E/AndroidRuntime(11807): at dalvik.system.NativeStart.main(Native Method)
E/AppErrorDialog( 545): Failed to get ILowStorageHandle instance
HideFromAccessibilityHelper.java第68行代码如下
private void restoreImportantForAccessibilityHelper(View v) {v.setImportantForAccessibility(mPreviousValues.get(v));//第68行 mPreviousValues.remove(v);
调试几遍发现v不为空,mPreviousValues这个hashMap(View, Integer)也不为空,可是报了空指针异常。原来View.java中该方法定义如下:
public void setImportantForAccessibility(int mode) { if (mode != getImportantForAccessibility()) { mPrivateFlags2 &= ~PFLAG2_IMPORTANT_FOR_ACCESSIBILITY_MASK; mPrivateFlags2 |= (mode << PFLAG2_IMPORTANT_FOR_ACCESSIBILITY_SHIFT) & PFLAG2_IMPORTANT_FOR_ACCESSIBILITY_MASK; notifyAccessibilityStateChanged(); } }
其中参数为int,而我们上述使用中参数却为Integer,这必然有一个类型转换的问题,当hashMap中的Integer对象为空是,这一隐藏的类型转换导致了空指针异常,这也是为什么查不出哪个值为空的原因。
一段测试程序如下:
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Integer a = null;int b = a;}
FATAL EXCEPTION: main
E/AndroidRuntime(12233): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sean.test/com.sean.test.MainActivity}: java.lang.NullPointerException
E/AndroidRuntime(12233): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306)
E/AndroidRuntime(12233): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
E/AndroidRuntime(12233): at android.app.ActivityThread.access$600(ActivityThread.java:156)
E/AndroidRuntime(12233): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340)
E/AndroidRuntime(12233): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(12233): at android.os.Looper.loop(Looper.java:153)
E/AndroidRuntime(12233): at android.app.ActivityThread.main(ActivityThread.java:5299)
E/AndroidRuntime(12233): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(12233): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(12233): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
E/AndroidRuntime(12233): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
E/AndroidRuntime(12233): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(12233): Caused by: java.lang.NullPointerException
E/AndroidRuntime(12233): at com.sean.test.MainActivity.onCreate(MainActivity.java:17)
E/AndroidRuntime(12233): at android.app.Activity.performCreate(Activity.java:5122)
E/AndroidRuntime(12233): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
E/AndroidRuntime(12233): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
E/AndroidRuntime(12233): ... 11 more
E/AppErrorDialog( 545): Failed to get ILowStorageHandle instance
- view中setImportantForAccessibility调用时莫名其妙的空指针异常
- view的空指针异常(Kotlin)
- View对象控件调用setOnclickListener空指针异常
- android 4.3 调用 view.measure()时报空指针异常
- 含有RelativeLayout的View.measure()空指针异常
- Mybatis中selectOne的空指针异常
- android 中遇到的空指针异常
- struts2的Action中调用DAO方法时报空指针异常 解决办法
- 添加自定义view出现空指针异常
- 调用jni的时候出现transformNativeLibsWithStripDebugSymbolForRelease空指针异常
- 调用String对象的toString()方法时报空指针异常
- oracle调用netca、netmgr出现的空指针异常
- Connection中的createStatement()方法调用时出现空指针异常
- 解决取消Notification调用cancelALl()方法时出现的空指针异常
- SSM框架项目调用查询的方法时 报空指针异常
- controller调用service接口 空指针异常
- Android调用webservice抛出空指针异常
- 空指针异常的解决
- Android如何实现模态对话框(Modal Dialog)
- MSP430F5438学习笔记 DCO倍频至8MHZ
- 一个简单的缓存管理
- netty中使用Thread.sleep()方法的问题
- React中文教程 - Component Data(外部参数及私有变量)
- view中setImportantForAccessibility调用时莫名其妙的空指针异常
- mysql 密码修改
- BlazeDS集成调试问题分析
- Java中的异常
- 【URI】Android常用URI
- Linux inotify功能及实现原理
- Could not parse configuration: /hibernate.cfg.xml
- MSP430Ware使用笔记 初始化XT1
- 一个月能让“蚊子”“蟑螂”绝子绝孙的秘诀(组图)