Java 设置首选项单击侦听器帮助,以便在活动启动时关闭

Java 设置首选项单击侦听器帮助,以便在活动启动时关闭,java,android,android-preferences,Java,Android,Android Preferences,我知道这不会像我想的那么难。我确信我已经具备了实现onClickListener所需的一切。我是不是遗漏了什么,为什么要关门?我已经提供了要查看的堆栈。任何帮助都会很好。这应该是一个保存用户设置的简单活动。如果我注释掉此代码,“活动”将显示“活动” Preference customPref = (Preference) findPreference("customPref"); customPref.setOnPreferenceClickListener(new OnPreferenceC

我知道这不会像我想的那么难。我确信我已经具备了实现onClickListener所需的一切。我是不是遗漏了什么,为什么要关门?我已经提供了要查看的堆栈。任何帮助都会很好。这应该是一个保存用户设置的简单活动。如果我注释掉此代码,“活动”将显示“活动”

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;
    }
});
日志:


您的
customPref
变量似乎为空。请确保您的首选项xml(如果您使用)中的key
customPref
具有首选项,否则可能是您在那里拼错了该键。

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

看起来
findPreference(“customPref”)
正在返回
null
。您能检查一下吗?看起来
findPreference(“customPref”)
正在返回
null
。你能检查一下吗?看,我就知道这么简单。看,我就知道这么简单。
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)