java - setOnPreferenceClickListener 帮助, Activity 启动时关闭

标签 java android android-preferences

我知道这并不像我想象的那么难。我确信我拥有实现我的 onClickListener 所需的一切。我错过了什么,为什么会强制关闭?我已经提供了堆栈以供查看。任何帮助都会很棒。这被认为是保存用户设置的简单 Activity 。如果我注释掉此代码, Activity 将显示该 Activity 。

Preference customPref = (Preference) findPreference("customPref");

customPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { //this line forcecloses every time i run the activity.
    @Override
    public boolean onPreferenceClick(Preference preference) {
        Toast.makeText(getBaseContext(),
                       "The custom preference has been clicked",
                       Toast.LENGTH_LONG)
             .show();
        SharedPreferences customSharedPreference = getSharedPreferences(
                "myCustomSharedPrefs", Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = customSharedPreference.edit();
        editor.putString("myCustomPref", "The preference has been clicked");
        editor.commit();
        return true;
    }
});

日志:

07-10 16:36:47.137: WARN/System.err(1042): java.lang.NullPointerException
07-10 16:36:47.147: WARN/System.err(1042):     at com.nyneaxis.android.mpg.Preferences.onCreate(Preferences.java:22)
07-10 16:36:47.147: WARN/System.err(1042):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-10 16:36:47.157: WARN/System.err(1042):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
07-10 16:36:47.157: WARN/System.err(1042):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
07-10 16:36:47.157: WARN/System.err(1042):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
07-10 16:36:47.157: WARN/System.err(1042):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
07-10 16:36:47.167: WARN/System.err(1042):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-10 16:36:47.167: WARN/System.err(1042):     at android.os.Looper.loop(Looper.java:123)
07-10 16:36:47.167: WARN/System.err(1042):     at android.app.ActivityThread.main(ActivityThread.java:4363)
07-10 16:36:47.167: WARN/System.err(1042):     at java.lang.reflect.Method.invokeNative(Native Method)
07-10 16:36:47.177: WARN/System.err(1042):     at java.lang.reflect.Method.invoke(Method.java:521)
07-10 16:36:47.177: WARN/System.err(1042):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
07-10 16:36:47.177: WARN/System.err(1042):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
07-10 16:36:47.177: WARN/System.err(1042):     at dalvik.system.NativeStart.main(Native Method)

最佳答案

看起来您的 customPref 变量为空。确保您在首选项 xml 中对键 customPref 有首选项(如果您使用一个),或者您可能在那里拼错了键。

关于java - setOnPreferenceClickListener 帮助, Activity 启动时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6642401/

相关文章:

java - 如何每10秒更新一次GPS位置?

java - 如何在用 java 编码时使用 Tapestry 或数据表构建服务器端数据表?

android - 调用 getFilesDir() 时崩溃

android - 如何使用 Monkeyrunner 卸载软件包?

android - React Native Android azure 构建随机失败

android - 从 PreferenceScreen 内部打开 fragment

java.lang.ClassCastException : org. neo4j.kernel.TopLevelTransaction

java - 在 Spring Security Oauth2 中使用 RemoteTokenServices 配置资源服务器

android - 如何在 DialogFragment 中添加 PreferenceFragment

android - 使用 LinearLayout 模拟首选项外观/感觉