簡體   English   中英

SharedPreferences NullPointerException

[英]SharedPreferences NullPointerException

我一直在這一行得到NullPointerException:

SharedPreferences myPreference = PreferenceManager.getDefaultSharedPreferences(this);

我運行了一些東西,我相信我有錯誤的上下文,因為它是在主包的子包中所以我不認為它可以引用XML首選項文件。 我已經在主程序包中的類中使用了這個,沒有任何問題,但由於某種原因,這會導致異常。

完整代碼:

    package schoolBook.Icestone.Expandable;

import schoolBook.Icestone.Days;
import schoolBook.Icestone.Main;
import schoolBook.Icestone.SetPreference;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;

public class Lesson1 extends Lessons {

    public Lesson1(String name) {
        super(name);
        //setGroup(" " + Days.getLessonarray(0) + " ");


        String key = "W" + Main.getWeek() + "_" + SetPreference.xmlday + "_L" + SetPreference.xmllesson + "_Lesson";
        System.out.println(key);
        try {
        SharedPreferences myPreference = PreferenceManager.getDefaultSharedPreferences(this);
        String group = myPreference.getString(key, "def");
        setGroup(" " + group + " "); 
        } catch (NullPointerException ex) {
            ex.printStackTrace();
            setGroup(" " + Days.getLessonarray(0) + " ");
        }

    }
}

Lesson.class擴展了Activity,所以認為這可能是我的問題的根源,但我不確定但是我需要這個構造函數才能創建可擴展列表視圖的標題。

任何幫助將不勝感激

如果有人能幫助對這個問題有所啟發,我將不勝感激

您需要將此代碼放入Activity方法onCreate中。 活動無法實例化為常規類。

把你在構造函數中的內容放在像這樣的方法中:

public void onCreate(Bundle bundles) {

}

只有這樣,才能以正確的方式提供上下文

this

將引用正確的上下文。

編輯:

你可以這樣做:

public Lesson1(String name, Context context) {
    super(name);

    SharedPreferences myPreference = 
      PreferenceManager.getDefaultSharedPreferences(context);

    // Your other code

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM