android - SwitchPreference (PreferenceAtivity) - Android NULL

标签 android android-activity nullpointerexception

我有一个屏幕首选项,因此,使用了 PreferenceActivity,我已经构建并运行了所有功能,但是通过单击文本 SwitchPreference(即在行的任何位置而不是在同一行中)来创建电话(版本 4.1.2) switch ) 他突然出现 Null Pointer Excetion,但是如果你点击同一个 swtich 就可以正常工作。

这会是什么?

错误:

    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)

最佳答案

将此添加到您的自定义 switchPrefrences 组件

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

留空,不要调用 super.onClick();

这将使您的 onPrefrenceChange 除了点击之外(切换操作不会受到影响,只会影响行上的点击)

关于android - SwitchPreference (PreferenceAtivity) - Android NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26056486/

相关文章:

android - 优化我的语法荧光笔

android - 如何在不要求用户在浏览器或应用程序之间做出决定的情况下从链接打开应用程序,只需立即打开我的应用程序

java - 是什么导致了 AWT-EventQueue-0 中的 NullPointerException?

java - 什么是NullPointerException,我该如何解决?

java - Android 代码中扭曲的 Java 方法需要足够的关注

java - 如何将纳秒转换为秒?

java - FragmentViewPagerAdapter 屏幕旋转后不调用 getItem

android - 在 Android ADT r21.1 新 Activity 向导中禁用 "Finish"按钮

java - 在设置菜单中的 onClick 事件后打开“关于”对话框

java - 如何使用 apache POI hslf/xslf 将图像添加到 PowerPoint ppt 表格单元格?