在Android 5.0按下开关时崩溃按下、Android

2023-09-05 06:20:38 作者:离愁当酒

当应用程序崩溃与下面的logcat显示在我的应用程序的开关在安卓5.0上点击。在logcat中没有引用我的code中的任何地方它,这个交换机上的所有previous版本的罚款。交换机除了背景色死机一次点击出现看不见,只。

测试之后,同样的事情发生了,我是否定义了一个setOnCheckedChangeListener功能与否。即使开关是在布局,但从来没有在code它仍然会崩溃点击时

一个有问题的开关:

 <开关
    机器人:layout_width =90dp
    机器人:layout_height =WRAP_CONTENT
    机器人:textOff =型机载
    机器人:纹元=直接接触
    机器人:textAppearance =机器人:ATTR / textAppearanceMedium
    机器人:ID =@ + ID / switchWind/>
 

这就是我如何引用它。

  //实际上并不重要,因为同样的事情发生没有这个
开关sWind =(开关)findViewById(R.id.switchWind);
sWind.setOnCheckedChangeListener(新CompoundButton.OnCheckedChangeListener(){
    公共无效onCheckedChanged(CompoundButton V,布尔器isChecked){
        //不会到达这里
    }
});
 
关机小助手app下载 关机小助手软件下载v2.2 安卓版 当易网

logcat的:

  11-17 22:09:18.722 30190-30190 / com.egondev.android.patientzerotest E / InputEventReceiver:异常调度输入事件。
11-17 22:09:18.722 30190-30190 / com.egondev.android.patientzerotest E / MessageQueue-JNI:异常的MessageQueue回调:handleReceiveCallback
11-17 22:09:18.735 30190-30190 / com.egondev.android.patientzerotest E / MessageQueue-JNI:显示java.lang.NullPointerException:尝试调用虚拟方法布尔android.graphics.drawable.Drawable.getPadding(机器人。在一个空对象引用graphics.Rect)
        在android.widget.Switch.hitThumb(Switch.java:694)
        在android.widget.Switch.onTouchEvent(Switch.java:711)
        在android.view.View.dispatchTouchEvent(View.java:8388)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2314)
        在com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1692)
        在android.app.Activity.dispatchTouchEvent(Activity.java:2739)
        在com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:2275)
        在android.view.View.dispatchPointerEvent(View.java:8578)
        在android.view.ViewRootImpl $ ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4021)
        在android.view.ViewRootImpl $ ViewPostImeInputStage.onProcess(ViewRootImpl.java:3887)
        在android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3449)
        在android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:3502)
        在android.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:3468)
        在android.view.ViewRootImpl $ AsyncInputStage.forward(ViewRootImpl.java:3578)
        在android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:3476)
        在android.view.ViewRootImpl $ AsyncInputStage.apply(ViewRootImpl.java:3635)
        在android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3449)
        在android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:3502)
        在android.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:3468)
        在android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:3476)
        在android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3449)
        在android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5701)
        在android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5675)
        在android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5646)
        在android.view.ViewRootImpl $ WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5791)
        在android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
        在android.os.MessageQueue.nativePollOnce(本机方法)
        在android.os.MessageQueue.next(MessageQueue.java:143)
        在android.os.Looper.loop(Looper.java:122)
        在android.app.ActivityThread.main(ActivityThread.java:5221)
        在java.lang.reflect.Method.invoke(本机方法)
        在java.lang.reflect.Method.invoke(Method.java:372)
        在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:899)
        在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
11-17 22:09:18.735 30190-30190 / com.egondev.android.patientzerotest D / AndroidRuntime:关闭虚拟机
11-17 22:09:18.736 30190-30190 / com.egondev.android.patientzerotest E / AndroidRuntime:致命异常:主要
工艺:com.egondev.android.patientzerotest,PID:30190
显示java.lang.NullPointerException:尝试在空对象引用调用虚方法布尔android.graphics.drawable.Drawable.getPadding(android.graphics.Rect)'
        在android.widget.Switch.hitThumb(Switch.java:694)
        在android.widget.Switch.onTouchEvent(Switch.java:711)
        在android.view.View.dispatchTouchEvent(View.java:8388)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        在com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2314)
        在com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1692)
        在android.app.Activity.dispatchTouchEvent(Activity.java:2739)
        在com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:2275)
        在android.view.View.dispatchPointerEvent(View.java:8578)
        在android.view.ViewRootImpl $ ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4021)
        在android.view.ViewRootImpl $ ViewPostImeInputStage.onProcess(ViewRootImpl.java:3887)
        在android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3449)
        在android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:3502)
        在android.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:3468)
        在android.view.ViewRootImpl $ AsyncInputStage.forward(ViewRootImpl.java:3578)
        在android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:3476)
        在android.view.ViewRootImpl $ AsyncInputStage.apply(ViewRootImpl.java:3635)
        在android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3449)
        在android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:3502)
        在android.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:3468)
        在android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:3476)
        在android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3449)
        在android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5701)
        在android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5675)
        在android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5646)
        在android.view.ViewRootImpl $ WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5791)
        在android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
        在android.os.MessageQueue.nativePollOnce(本机方法)
        在android.os.MessageQueue.next(MessageQueue.java:143)
        在android.os.Looper.loop(Looper.java:122)
        在android.app.ActivityThread.main(ActivityThread.java:5221)
        在java.lang.reflect.Method.invoke(本机方法)
        在java.lang.reflect.Method.invoke(Method.java:372)
        在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:899)
        在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
 

解决方案

这似乎是在Android中5的已知问题。

请参考以下链接:

https://$c$c.google.com/p/android-developer-$p$pview/issues/detail?id=1704

When clicking on a switch in my app in Android 5.0 the app crashes with the logcat shown below. The logcat doesn't reference my code anywhere in it, and this switch has worked fine on all previous versions. The switch appears invisible except for the background color and only crashes once clicked on.

After testing, the same thing happens whether I define a setOnCheckedChangeListener function or not. Even if the switch is in the layout but never in the code it will still crash when clicked on.

One of the switches in question:

<Switch
    android:layout_width="90dp"
    android:layout_height="wrap_content"
    android:textOff="Airborn"
    android:textOn="Direct Contact"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:id="@+id/switchWind"/>

And here's how I reference it.

// Doesn't actually matter since same thing happens without this
Switch sWind = (Switch) findViewById(R.id.switchWind);
sWind.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    public void onCheckedChanged(CompoundButton v, boolean isChecked) {
        // Won't reach here
    }
});

Logcat:

11-17 22:09:18.722  30190-30190/com.egondev.android.patientzerotest E/InputEventReceiver﹕ Exception dispatching input event.
11-17 22:09:18.722  30190-30190/com.egondev.android.patientzerotest E/MessageQueue-JNI﹕ Exception in MessageQueue callback: handleReceiveCallback
11-17 22:09:18.735  30190-30190/com.egondev.android.patientzerotest E/MessageQueue-JNI﹕ java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.drawable.Drawable.getPadding(android.graphics.Rect)' on a null object reference
        at android.widget.Switch.hitThumb(Switch.java:694)
        at android.widget.Switch.onTouchEvent(Switch.java:711)
        at android.view.View.dispatchTouchEvent(View.java:8388)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2314)
        at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1692)
        at android.app.Activity.dispatchTouchEvent(Activity.java:2739)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2275)
        at android.view.View.dispatchPointerEvent(View.java:8578)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4021)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3887)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3578)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3635)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5701)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5675)
        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5646)
        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5791)
        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:143)
        at android.os.Looper.loop(Looper.java:122)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
11-17 22:09:18.735  30190-30190/com.egondev.android.patientzerotest D/AndroidRuntime﹕ Shutting down VM
11-17 22:09:18.736  30190-30190/com.egondev.android.patientzerotest E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.egondev.android.patientzerotest, PID: 30190
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.drawable.Drawable.getPadding(android.graphics.Rect)' on a null object reference
        at android.widget.Switch.hitThumb(Switch.java:694)
        at android.widget.Switch.onTouchEvent(Switch.java:711)
        at android.view.View.dispatchTouchEvent(View.java:8388)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2314)
        at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1692)
        at android.app.Activity.dispatchTouchEvent(Activity.java:2739)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2275)
        at android.view.View.dispatchPointerEvent(View.java:8578)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4021)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3887)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3578)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3635)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5701)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5675)
        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5646)
        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5791)
        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:143)
        at android.os.Looper.loop(Looper.java:122)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

解决方案

It seems like a known issue in Android 5.

Please refer the following link :

https://code.google.com/p/android-developer-preview/issues/detail?id=1704