例外的列表preferences [英] Exception on ListPreferences

查看:122
本文介绍了例外的列表preferences的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的第一款Android应用程序,我遇到试图使用列表preference时异常。随着preferences的应用程序加载......但是当我触摸列表preference项中的应用意外停止。

Settings.java

 公共类设置来延长preferenceActivity {
    / **第一次创建活动时调用。 * /
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        this.add preferencesFromResource(R.layout.settings);
    }
}
 

的settings.xml

 < XML版本=1.0编码=UTF-8&GT?;
< preferenceScreen
的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android>
    <复选框preference
        机器人:关键=chk_enabled
        机器人:总结=的基础上设定短信回应
        机器人:标题=启用
    />
    <表preference
        机器人:标题=联系人
        机器人:总结=针数将发送短信
        机器人:关键=list_contacts
        安卓:设置defaultValue =0
        机器人:项=@阵列/ list_entries
        机器人:entryValues​​ =@阵列/ list_values​​
    />
< / preferenceScreen>
 

arrays.xml

 < XML版本=1.0编码=UTF-8&GT?;
<资源>
    <字符串数组名=list_entries>
        <项目>所有< /项目>
        <项目>白名单LT; /项目>
        <项目>黑名单< /项目>
    < /字符串数组>

    <整型数组名=list_values​​>
        <项目> 0℃/项目>
        <项目> 1< /项目>
        <项目> 2'; /项目>
    < /整数数组>
< /资源>
 

这是logcat的输出:

  D / AndroidRuntime(3187):>>>>>>>>>>>>>> AndroidRuntime START<<<<<<<<<<<<<<
D / AndroidRuntime(3187):CheckJNI为OFF
D / AndroidRuntime(3187):---注册本地函数---
I / JDWP(3187):收到的文件描述符16亚行
/ DDM堆(3187):GOT功能列表请求
I / ActivityManager(86):启动活动:意向{行为= android.intent.action.MAIN猫= [android.intent.category.LAUNCHER] FLG = 0x10000000处CMP = tml.UI.main / .MainActivity}
D / AndroidRuntime(3187):关闭虚拟机
D / dalvikvm(3187):DestroyJavaVM等非守护线程退出
I / ActivityManager(86):开始PROC tml.UI.main的活动tml.UI.main / .MainActivity:PID = 3194的uid = 10039导报= {1015}
D / dalvikvm(3187):DestroyJavaVM关闭VM下来
D / dalvikvm(3187):HeapWorker线程关闭
D / dalvikvm(3187):HeapWorker线程已关闭
D / JDWP(3187):JDWP关闭网...
D / JDWP(3187):+++同行断开
I / dalvikvm(3187):调试器分离;对象注册了1项
D / dalvikvm(3187):虚拟机清理
D / dalvikvm(3187):LinearAlloc为0x0使用的4194304(16%)676380
I / JDWP(3194):收到的文件描述符10亚行
D / DDM堆(3194):GOT功能列表请求
W /资源(3194):转换为字符串:{的TypedValue T = 0×10 / D =为0x0 A = -1}
I / ActivityManager(86):显示活动tml.UI.main / .MainActivity:977毫秒(总977毫秒)
D / AndroidRuntime(3194):关闭虚拟机
W / dalvikvm(3194):主题ID = 3:线程退出与未捕获的异常(组= 0x4001da28)
E / AndroidRuntime(3194):未捕获的处理程序:螺纹主力退出,由于未捕获的异常
E / AndroidRuntime(3194):显示java.lang.NullPointerException
E / AndroidRuntime(3194):在安卓preference.List preference.findIndexOfValue(名单preference.java:169)
E / AndroidRuntime(3194):在安卓preference.List preference.getValueIndex(名单preference.java:178)
E / AndroidRuntime(3194):在安卓preference.List preference.on prepareDialogBu​​ilder(名单preference.java:190)
E / AndroidRuntime(3194):在安卓preference.Dialog preference.showDialog(对话preference.java:291)
E / AndroidRuntime(3194):在安卓preference.Dialog preference.onClick(对话preference.java:262)
E / AndroidRuntime(3194):在安卓preference preference.performClick(preference.java:811)。
E / AndroidRuntime(3194):在安卓preference preferenceScreen.onItemClick(preferenceScreen.java:190)。
E / AndroidRuntime(3194):在android.widget.AdapterView.performItemClick(AdapterView.java:284)
E / AndroidRuntime(3194):在android.widget.ListView.performItemClick(ListView.java:3246)
E / AndroidRuntime(3194):在android.widget.AbsListView $ PerformClick.run(AbsListView.java:1635)
E / AndroidRuntime(3194):在android.os.Handler.handleCallback(Handler.java:587)
E / AndroidRuntime(3194):在android.os.Handler.dispatchMessage(Handler.java:92)
E / AndroidRuntime(3194):在android.os.Looper.loop(Looper.java:123)
E / AndroidRuntime(3194):在android.app.ActivityThread.main(ActivityThread.java:4203)
E / AndroidRuntime(3194):在java.lang.reflect.Method.invokeNative(本机方法)
E / AndroidRuntime(3194):在java.lang.reflect.Method.invoke(Method.java:521)
E / AndroidRuntime(3194):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:791)
E / AndroidRuntime(3194):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
E / AndroidRuntime(3194):在dalvik.system.NativeStart.main(本机方法)
I /工艺(86):发送信号。 PID:3194 SIG:3
I / dalvikvm(3194):主题ID = 7:反应信号3
I / dalvikvm(3194):写堆栈跟踪/data/anr/traces.txt
I /过程(3194):发送信号。 PID:3194 SIG:9
I / ActivityManager(86):过程tml.UI.main(PID 3194)已死亡。
I /窗口管理器(86):WIN死亡:窗口{4341fd00 tml.UI.main / tml.UI.main.MainActivity暂停= FALSE}
W / UsageStats(86):com.android.launcher意外的简历时,如果已经恢复了tml.UI.main
W / InputManagerService(86):得到的RemoteException发送SETACTIVE(假)通知,为PID 3194 UID 10039
 

解决方案

我固定它...我一直在努力,并在年底事实证明(或者看起来,至少是),我不能用整数数组作为entryValues​​来源。我只是改变了整数数组为字符串数组,并得到它的工作。

如果有一种方法使用整数数组为源entryValues​​请评论。我仍然会这样的,它只是使我更有意义。

This is my first Android app and I've encountered an exception when trying to use the ListPreference. The application loads along with the preferences... but when i touch the ListPreference entry the applications "stops unexpectedly".

Settings.java

public class Settings extends PreferenceActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.addPreferencesFromResource(R.layout.settings);
    }
}

settings.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
    <CheckBoxPreference
        android:key="chk_enabled"
        android:summary="SMS response based on settings"
        android:title="Enable"
    />
    <ListPreference
        android:title="Contacts"
        android:summary="Contacs that will be sent SMSs"
        android:key="list_contacts"
        android:defaultValue="0"
        android:entries="@array/list_entries"
        android:entryValues="@array/list_values" 
    />
</PreferenceScreen>

arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="list_entries">
        <item>All</item>
        <item>WhiteList</item>
        <item>BlackList</item>
    </string-array>

    <integer-array name="list_values">
        <item>0</item>
        <item>1</item>
        <item>2</item>
    </integer-array>
</resources>

This is the logcat output:

D/AndroidRuntime( 3187): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime( 3187): CheckJNI is OFF
D/AndroidRuntime( 3187): --- registering native functions ---
I/jdwp    ( 3187): received file descriptor 16 from ADB
/ddm-heap( 3187): Got feature list request
I/ActivityManager(   86): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=tml.UI.main/.MainActivity }
D/AndroidRuntime( 3187): Shutting down VM
D/dalvikvm( 3187): DestroyJavaVM waiting for non-daemon threads to exit
I/ActivityManager(   86): Start proc tml.UI.main for activity tml.UI.main/.MainActivity: pid=3194 uid=10039 gids={1015}
D/dalvikvm( 3187): DestroyJavaVM shutting VM down
D/dalvikvm( 3187): HeapWorker thread shutting down
D/dalvikvm( 3187): HeapWorker thread has shut down
D/jdwp    ( 3187): JDWP shutting down net...
D/jdwp    ( 3187): +++ peer disconnected
I/dalvikvm( 3187): Debugger has detached; object registry had 1 entries
D/dalvikvm( 3187): VM cleaning up
D/dalvikvm( 3187): LinearAlloc 0x0 used 676380 of 4194304 (16%)
I/jdwp    ( 3194): received file descriptor 10 from ADB
D/ddm-heap( 3194): Got feature list request
W/Resources( 3194): Converting to string: TypedValue{t=0x10/d=0x0 a=-1}
I/ActivityManager(   86): Displayed activity tml.UI.main/.MainActivity: 977 ms (total 977 ms)
D/AndroidRuntime( 3194): Shutting down VM
W/dalvikvm( 3194): threadid=3: thread exiting with uncaught exception (group=0x4001da28)
E/AndroidRuntime( 3194): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime( 3194): java.lang.NullPointerException
E/AndroidRuntime( 3194):    at android.preference.ListPreference.findIndexOfValue(ListPreference.java:169)
E/AndroidRuntime( 3194):    at android.preference.ListPreference.getValueIndex(ListPreference.java:178)
E/AndroidRuntime( 3194):    at android.preference.ListPreference.onPrepareDialogBuilder(ListPreference.java:190)
E/AndroidRuntime( 3194):    at android.preference.DialogPreference.showDialog(DialogPreference.java:291)
E/AndroidRuntime( 3194):    at android.preference.DialogPreference.onClick(DialogPreference.java:262)
E/AndroidRuntime( 3194):    at android.preference.Preference.performClick(Preference.java:811)
E/AndroidRuntime( 3194):    at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:190)
E/AndroidRuntime( 3194):    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
E/AndroidRuntime( 3194):    at android.widget.ListView.performItemClick(ListView.java:3246)
E/AndroidRuntime( 3194):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1635)
E/AndroidRuntime( 3194):    at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime( 3194):    at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 3194):    at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 3194):    at android.app.ActivityThread.main(ActivityThread.java:4203)
E/AndroidRuntime( 3194):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3194):    at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 3194):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
E/AndroidRuntime( 3194):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
E/AndroidRuntime( 3194):    at dalvik.system.NativeStart.main(Native Method)
I/Process (   86): Sending signal. PID: 3194 SIG: 3
I/dalvikvm( 3194): threadid=7: reacting to signal 3
I/dalvikvm( 3194): Wrote stack trace to '/data/anr/traces.txt'
I/Process ( 3194): Sending signal. PID: 3194 SIG: 9
I/ActivityManager(   86): Process tml.UI.main (pid 3194) has died.
I/WindowManager(   86): WIN DEATH: Window{4341fd00 tml.UI.main/tml.UI.main.MainActivity paused=false}
W/UsageStats(   86): Unexpected resume of com.android.launcher while already resumed in tml.UI.main
W/InputManagerService(   86): Got RemoteException sending setActive(false) notification to pid 3194 uid 10039

解决方案

i fixed it... I kept on trying and at the end it turns out (or seems, at the very least) that I cannot use integer-array as the entryValues Source. I just changed that integer-array to a string-array and got it working.

If there's a way to use integer-array as the source for entryValues please comment. I would still like that, it just makes more sense TO ME.

这篇关于例外的列表preferences的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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