Android 当用户试图打开PreferenceActivity时,应用程序崩溃

Android 当用户试图打开PreferenceActivity时,应用程序崩溃,android,Android,我只有一个窗口,您可以在其中按下菜单->首选项并启动意图 @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { switch (item.getItemId()) { case R.id.menu_settings: startActivity(new Intent(this, com.example.app.PreferenciasGenerales

我只有一个窗口,您可以在其中按下菜单->首选项并启动意图

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_settings:
            startActivity(new Intent(this, com.example.app.PreferenciasGenerales.class));
            return true;
        default:
            return false;
    }
}
它会自动表示必须关闭应用程序

未捕获处理程序:由于未捕获异常而退出主线程
java.lang.RuntimeException:无法启动活动组件信息{com.example.app/com.example.app.PreferenciasGenerales}:
java.lang.ClassCastException:java.lang.Integer
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
在android.app.ActivityThread.access$2200(ActivityThread.java:119)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
位于android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:123)
在android.app.ActivityThread.main(ActivityThread.java:4363)
位于java.lang.reflect.Method.Invokenactive(本机方法)
在java.lang.reflect.Method.invoke(Method.java:521)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.ClassCastException:java.lang.Integer 位于android.app.ApplicationContext$SharedReferencesImpl.getString(ApplicationContext.java:2572) 位于android.preference.preference.getPersistedString(preference.java:1250) 在android.preference.ListPreference.onSetInitialValue(ListPreference.java:232)中 位于android.preference.preference.dispatchSetInitialValue(preference.java:1173) 位于android.preference.preference.onAttachedToHierarchy(preference.java:985) 在android.preference.PreferenceGroup.addPreference(PreferenceGroup.java:156)中 在android.preference.PreferenceGroup.addItemFromInflater(PreferenceGroup.java:97)中 在android.preference.PreferenceGroup.addItemFromInflater(PreferenceGroup.java:38)中 位于android.preference.genericinflate.rInflate(genericinflate.java:488) 位于android.preference.genericinflate.rInflate(genericinflate.java:493) 在android.preference.GenericInflater.inflate(GenericInflater.java:326) 在android.preference.GenericInflater.inflate(GenericInflater.java:263) 在android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:254)中 位于android.preference.PreferenceActivity.addPreferencesFromResource(PreferenceActivity.java:253) ->在com.example.app.PreferenciasGenerales.onCreate(PreferenciasGenerales.java:34)上 位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)上 ... 还有11个

我想启动的首选活动是:

public class PreferenciasGenerales extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    /*->*/addPreferencesFromResource(R.xml.preferencias_general);/*<- Here is the exception at StackTrace */
    }

    @Override
    protected void onStop() {
        final ProgressDialog waitDialog =
            ProgressDialog.show( this, "Wait", "i'm testing that those things you write are correct...", true);
        waitDialog.setCancelable(false);
        /* Cannot have integers array on ListPreference
         * http://code.google.com/p/android/issues/detail?id=2096 */
        String old_debug_level = PreferenceManager.getDefaultSharedPreferences(this).getString("debug_level", "3");
        PreferenceManager.getDefaultSharedPreferences(this).edit()
        .remove("debug_level")
        .putInt("debug_level", Integer.parseInt(old_debug_level))
        .commit();
    old_debug_level = null;

    String api_server = PreferenceManager.getDefaultSharedPreferences(PreferenciasGenerales.this).getString("api_server", "");
    String account_id = PreferenceManager.getDefaultSharedPreferences(PreferenciasGenerales.this).getString("account_id", "");
    String account_pass = PreferenceManager.getDefaultSharedPreferences(PreferenciasGenerales.this).getString("account_pass", "");
    String account_key = PreferenceManager.getDefaultSharedPreferences(PreferenciasGenerales.this).getString("account_key", "");
    boolean debug_enabled= PreferenceManager.getDefaultSharedPreferences(PreferenciasGenerales.this).getBoolean("debug_enabled", false);
    int debug_level = PreferenceManager.getDefaultSharedPreferences(PreferenciasGenerales.this).getInt("debug_level", 3);

    try {
                 // Connect to API to test credentials...
公共类PreferenceAsGenerales扩展PreferenceActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

/*->*/addPreferencesFromResource(R.xml.preferenceas_-general);/*无论您使用何种设备或模拟器进行测试,此应用程序已经保存了
共享引用
,其中保存的值是
整数
,您现在正试图将其加载到
首选项
,该首选项需要
字符串
。请尝试通过设置清除应用程序的数据,或者卸载并重新安装t他使用应用程序来解决这个问题


另外,请注意,在您当前的首选项XML中,
debug_level
将保存为
String
,但您正试图通过
getInt()检索它

此应用程序在您用于测试的任何设备或模拟器上都已经保存了
共享引用
,其中保存的值是
整数
,您现在正试图将其加载到
首选项
,该首选项需要
字符串
。请尝试通过设置清除应用程序的数据,或卸载并重新加载正在清点应用程序,以解决此问题


另外,请注意,在您当前的首选项XML中,
debug_level
将保存为
String
,但您正试图通过
getInt()检索它

谢谢你的回答。错误仍然存在,我用更多数据更新了问题。谢谢你的回答。错误仍然存在,我用更多数据更新了问题。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <PreferenceCategory>
        <EditTextPreference android:key="api_server"/>
    </PreferenceCategory>
    <PreferenceCategory android:title="@string/preferencias_cuenta_categoria_title">
        <EditTextPreference android:key="account_id"  />
        <EditTextPreference android:key="account_pass" />
        <EditTextPreference android:key="account_key"  />
    </PreferenceCategory>
        <PreferenceCategory android:key="debug_enabled" />
        <ListPreference android:key="debug_level" android:entryValues="@array/debug_level_entryValues" android:entries="@array/debug_level_entries" />
</PreferenceCategory>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="debug_level_entries">
        <item>VERBOSE</item>
        <item>DEBUG</item>
        <item>INFO</item>
        <item>WARN</item>
        <item>ERROR</item>
    </string-array>
    <string-array name="debug_level_entryValues">
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
        <item>5</item>
   </string-array>