简体   繁体   English

无法在“首选项”屏幕中启动活动组件信息

[英]Unable to start activity component info in a Preference Screen

I try to design a preference activty witch a preference screen in R.xml but logcat give me this error 我尝试在R.xml中设计首选项活动女巫首选项屏幕,但是logcat给我这个错误

09-12 22:04:16.354: E/AndroidRuntime(4641): FATAL EXCEPTION: main
09-12 22:04:16.354: E/AndroidRuntime(4641): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nenneinc.devicelocator/com.nenneinc.devicelocator.PrefActivity}: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.os.Looper.loop(Looper.java:137)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.app.ActivityThread.main(ActivityThread.java:5103)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at java.lang.reflect.Method.invokeNative(Native Method)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at java.lang.reflect.Method.invoke(Method.java:525)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at dalvik.system.NativeStart.main(Native Method)
09-12 22:04:16.354: E/AndroidRuntime(4641): Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:224)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.Preference.getPersistedString(Preference.java:1407)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.EditTextPreference.onSetInitialValue(EditTextPreference.java:154)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.Preference.dispatchSetInitialValue(Preference.java:1323)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.Preference.onAttachedToHierarchy(Preference.java:1135)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.PreferenceGroup.addPreference(PreferenceGroup.java:163)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.PreferenceGroup.addItemFromInflater(PreferenceGroup.java:104)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.PreferenceGroup.addItemFromInflater(PreferenceGroup.java:45)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.GenericInflater.rInflate(GenericInflater.java:488)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.GenericInflater.rInflate(GenericInflater.java:493)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.GenericInflater.inflate(GenericInflater.java:326)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.GenericInflater.inflate(GenericInflater.java:263)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:272)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.PreferenceActivity.addPreferencesFromResource(PreferenceActivity.java:1433)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at com.nenneinc.devicelocator.PrefActivity.onCreate(PrefActivity.java:13)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.app.Activity.performCreate(Activity.java:5133)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
09-12 22:04:16.354: E/AndroidRuntime(4641):     ... 11 more

I don't know why and I'm becoming crazy. 我不知道为什么,我快疯了。 The xml code is this, very simple xml代码是这样,非常简单

<PreferenceCategory android:title="Settings protection" >
    <CheckBoxPreference 
        android:defaultValue="false"
        android:title="Proteggere con password" 
        android:summary="Progetti con una password le tue opzioni nel caso il telefono venisse perso" 
        android:key="prefProtect"/>

    <EditTextPreference 
        android:key="prefPass"
        android:title="Inserire password" />
</PreferenceCategory>

<PreferenceCategory android:title="Application settings" >
    <EditTextPreference 
        android:key="prefDel"
        android:title="Elimina un numero cercandolo in archivio" />
</PreferenceCategory>

<PreferenceCategory android:title="Technical settings" >
    <CheckBoxPreference
        android:defaultValue="false"
        android:key="prefVocal"
        android:title="Abilitare comandi vocali (BETA)"
        android:summary="Abilita comandi vocali per attivare o disattivare il servizio.\nDire -Activate service- per abilitare il servizio, viceversa dire -Disable service-" />
</PreferenceCategory> 

And the PrefActivity code is this PrefActivity代码是这个

public class PrefActivity extends PreferenceActivity {

@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    addPreferencesFromResource(R.xml.options);

}
}

Please help me! 请帮我!

See your error: 看到您的错误:

Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String

Sounds like you try to convert boolean to String 听起来像您尝试将boolean转换为String

As a side note addPreferencesFromResource may to be deprecated, 附带说明, addPreferencesFromResource可能已被弃用,

Can you check following lines in your java code. 您可以在Java代码中检查以下几行吗? You have an error on the following lines 您在以下几行有错误

09-12 22:04:16.354: E/AndroidRuntime(4641):     at android.preference.Preference.getPersistedString(Preference.java:1407)

09-12 22:04:16.354: E/AndroidRuntime(4641):     at com.nenneinc.devicelocator.PrefActivity.onCreate(PrefActivity.java:13)

You are trying to cast a Boolean instance to a String . 您正在尝试将Boolean实例强制转换为String That can't happen. 那不可能 So try the following: 因此,请尝试以下操作:

boolean booleanValue = "true";
String s = new Boolean(booleanValue).toString();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM