Java 在空引用对象上调用setOnPreferenceChangeListener

Java 在空引用对象上调用setOnPreferenceChangeListener,java,android,Java,Android,这是完整的错误日志 03-27 08:08:30.264 D/SubSettings( 7079): Launching fragment com.sakura.settings.fragments.BatterybarSettings 03-27 08:08:30.275 D/AndroidRuntime( 7079): Shutting down VM 03-27 08:08:30.275 E/AndroidRuntime( 7079): FATAL EXCEPTION: main 03-2

这是完整的错误日志

03-27 08:08:30.264 D/SubSettings( 7079): Launching fragment com.sakura.settings.fragments.BatterybarSettings
03-27 08:08:30.275 D/AndroidRuntime( 7079): Shutting down VM
03-27 08:08:30.275 E/AndroidRuntime( 7079): FATAL EXCEPTION: main
03-27 08:08:30.275 E/AndroidRuntime( 7079): Process: com.android.settings, PID: 7079
03-27 08:08:30.275 E/AndroidRuntime( 7079): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.SubSettings}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.preference.Preference.setOnPreferenceChangeListener(androidx.preference.Preference$OnPreferenceChangeListener)' on a null object reference
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at android.os.Handler.dispatchMessage(Handler.java:107)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at android.os.Looper.loop(Looper.java:214)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at android.app.ActivityThread.main(ActivityThread.java:7355)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at java.lang.reflect.Method.invoke(Native Method)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
03-27 08:08:30.275 E/AndroidRuntime( 7079): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.preference.Preference.setOnPreferenceChangeListener(androidx.preference.Preference$OnPreferenceChangeListener)' on a null object reference
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at com.sakura.settings.fragments.BatterybarSettings.onCreate(BatterybarSettings.java:110)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at androidx.fragment.app.Fragment.performCreate(Fragment.java:2596)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:831)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at androidx.fragment.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1197)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at androidx.fragment.app.FragmentTransition.calculateFragments(FragmentTransition.java:1080)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at androidx.fragment.app.FragmentTransition.startTransitions(FragmentTransition.java:119)
03-27 08:08:30.275 E/AndroidRuntime( 7079):     at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1853)
我不知道应该如何初始化PreferenceChangeListener,我也尝试过寻找其他地方的代码引用,但不知道它们是如何初始化的。我的全部密码都在

先谢谢你

1。XML代码-root_preferences.XML,首选项布局res/XML/root_preferences.XML的路径


对不起,这没用。我已经知道如何在NPE上工作,但我不知道如何处理上面的一个。我已经知道如何在NPE上工作了。您发布的是一个空指针异常。你还没有为我们发布任何代码来帮助你,所以这是我们能做的最好的了。谢谢,问题解决了。谢谢一群家伙。我认为我给出了错误的app:key,这就是为什么OnPreferenceChangeListener变为空。
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategory app:title="MyCategory">
    <EditTextPreference
        app:key="myPrefID"
        app:title="name"
        android:defaultValue="xyz"
        app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
public static class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
    setPreferencesFromResource( R.xml.root_preferences, rootKey );
    EditTextPreference myPref = findPreference("myPrefID");

    myPref.setOnPreferenceChangeListener( (preference, newValue) ->{
            //newValue contains changed value
            Toast.makeText( getContext(),newValue.toString(), Toast.LENGTH_SHORT ).show();
            return false;
        } );   

     }
}