开关preference(preferenceAtivity) - Android的空 [英] SwitchPreference (PreferenceAtivity) - Android NULL

查看:475
本文介绍了开关preference(preferenceAtivity) - Android的空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个屏幕preferences,正因为如此,使用了preferenceActivity,我拥有一切建成并发挥作用,但电话(4.1.2版)通过单击文本转换preference(即任何地方的行而不在同一个交换机是)他迸出一个空指针EXCETION,但如果你点击相同的马桶盖工作正常。

那会是什么?

错误:

  E / AndroidRuntime:致命异常:主要
       显示java.lang.NullPointerException
    在android.widget.Switch.onPopulateAccessibilityEvent(Switch.java:550)
    在android.view.View.dispatchPopulateAccessibilityEventInternal(View.java:4621)
    在android.view.View.dispatchPopulateAccessibilityEvent(View.java:4611)
    。在安卓preference.TwoState preference.sendAccessibilityEvent(TwoState preference.java:197)
    。在安卓preference.Switch preference.onBindView(开关preference.java:114)
    在安卓preference preference.getView(preference.java:463)。
    在安卓preference preferenceGroupAdapter.getView(preferenceGroupAdapter.java:221)。
    在android.widget.AbsListView.obtainView(AbsListView.java:2308)
    在android.widget.ListView.makeAndAddView(ListView.java:1769)
    在android.widget.ListView.fillDown(ListView.java:672)
    在android.widget.ListView.fillSpecific(ListView.java:1330)
    在android.widget.ListView.layoutChildren(ListView.java:1600)
    在android.widget.AbsListView.onLayout(AbsListView.java:2143)
    在android.view.View.layout(View.java:13850)
    在android.view.ViewGroup.layout(ViewGroup.java:4364)
    在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1680)
    在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1538)
    在android.widget.LinearLayout.onLayout(LinearLayout.java:1451)
    在android.view.View.layout(View.java:13850)
    在android.view.ViewGroup.layout(ViewGroup.java:4364)
    在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1680)
    在android.widget.LinearLayout.layoutHorizo​​ntal(LinearLayout.java:1669)
    在android.widget.LinearLayout.onLayout(LinearLayout.java:1453)
    在android.view.View.layout(View.java:13850)
    在android.view.ViewGroup.layout(ViewGroup.java:4364)
    在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1680)
    在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1538)
    在android.widget.LinearLayout.onLayout(LinearLayout.java:1451)
    在android.view.View.layout(View.java:13850)
    在android.view.ViewGroup.layout(ViewGroup.java:4364)
    在android.widget.FrameLayout.onLayout(FrameLayout.java:448)
    在android.view.View.layout(View.java:13850)
    在android.view.ViewGroup.layout(ViewGroup.java:4364)
    在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1680)
    在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1538)
    在android.widget.LinearLayout.onLayout(LinearLayout.java:1451)
    在android.view.View.layout(View.java:13850)
    在android.view.ViewGroup.layout(ViewGroup.java:4364)
    在android.widget.FrameLayout.onLayout(FrameLayout.java:448)
    在android.view.View.layout(View.java:13850)
    在android.view.ViewGroup.layout(ViewGroup.java:4364)
    在android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1894)
    在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1710)
    在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1013)
    在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:4245)
    在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:725)
    在android.view.Choreographer.doCallbacks(Choreographer.java:555)
    在android.view.Choreographer.doFrame(Choreographer.java:525)
    在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:711)
    在android.os.Handler.handleCallback(Handler.java:615)
    在android.os.Handler.dispatchMessage(Handler.java:92)
    在android.os.Looper.loop(Looper.java:153)
    在android.app.ActivityThread.main(ActivityThread.java:5071)
    在java.lang.reflect.Method.invokeNative(本机方法)
    在java.lang.reflect.Method.invoke(Method.java:511)
    在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:790)
    在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
    在dalvik.system.NativeStart.main(本机方法)
 

解决方案

添加到您的自定义开关prefrences成分

@覆盖     保护无效的onClick(){ // Log.e(CustomSwitch preferences,的onClick称为);     }

保留空白别叫super.onClick();

这将让您在prefrenceChange除了点击(开关动作不会受到影响,只是该行上点击)

I have a screen preferences, and as such, used the PreferenceActivity, I have everything built and functioning, however a phone (Version 4.1.2) by clicking on the text SwitchPreference (ie anywhere on the row without being in the same switch ) he bursts with a Null Pointer Excetion, but if you click on the same swtich works fine.

What could this be?

error:

    E/AndroidRuntime﹕ FATAL EXCEPTION: main
       java.lang.NullPointerException
    at android.widget.Switch.onPopulateAccessibilityEvent(Switch.java:550)
    at   android.view.View.dispatchPopulateAccessibilityEventInternal(View.java:4621)
    at android.view.View.dispatchPopulateAccessibilityEvent(View.java:4611)
    at android.preference.TwoStatePreference.sendAccessibilityEvent(TwoStatePreference.java:197)
    at android.preference.SwitchPreference.onBindView(SwitchPreference.java:114)
    at android.preference.Preference.getView(Preference.java:463)
    at android.preference.PreferenceGroupAdapter.getView(PreferenceGroupAdapter.java:221)
    at android.widget.AbsListView.obtainView(AbsListView.java:2308)
    at android.widget.ListView.makeAndAddView(ListView.java:1769)
    at android.widget.ListView.fillDown(ListView.java:672)
    at android.widget.ListView.fillSpecific(ListView.java:1330)
    at android.widget.ListView.layoutChildren(ListView.java:1600)
    at android.widget.AbsListView.onLayout(AbsListView.java:2143)
    at android.view.View.layout(View.java:13850)
    at android.view.ViewGroup.layout(ViewGroup.java:4364)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1680)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1538)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1451)
    at android.view.View.layout(View.java:13850)
    at android.view.ViewGroup.layout(ViewGroup.java:4364)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1680)
    at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1669)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1453)
    at android.view.View.layout(View.java:13850)
    at android.view.ViewGroup.layout(ViewGroup.java:4364)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1680)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1538)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1451)
    at android.view.View.layout(View.java:13850)
    at android.view.ViewGroup.layout(ViewGroup.java:4364)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
    at android.view.View.layout(View.java:13850)
    at android.view.ViewGroup.layout(ViewGroup.java:4364)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1680)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1538)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1451)
    at android.view.View.layout(View.java:13850)
    at android.view.ViewGroup.layout(ViewGroup.java:4364)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
    at android.view.View.layout(View.java:13850)
    at android.view.ViewGroup.layout(ViewGroup.java:4364)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1894)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1710)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1013)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4245)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
    at android.view.Choreographer.doCallbacks(Choreographer.java:555)
    at android.view.Choreographer.doFrame(Choreographer.java:525)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
    at android.os.Handler.handleCallback(Handler.java:615)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:153)
    at android.app.ActivityThread.main(ActivityThread.java:5071)
    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:790)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
    at dalvik.system.NativeStart.main(Native Method)

解决方案

add this to your custom switchPrefrences component

@Override protected void onClick() { // Log.e("CustomSwitchPreferences", "onClick called"); }

Leave it empty and DO NOT call super.onClick();

This will keep your onPrefrenceChange aside from clicks (switch action won't get affected, just the clicks on the row)

这篇关于开关preference(preferenceAtivity) - Android的空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆