Android 从方法加载和保存SharedReference

Android 从方法加载和保存SharedReference,android,methods,sharedpreferences,Android,Methods,Sharedpreferences,我打算在中使用LoadPreferences和SavePreferences方法。我希望它尽可能灵活,这样我就可以在需要时调用任何“可保存”数据,并在完成对任何类/方法的更改后保存这些数据。当我像任何可返回变量一样设置它时,它会给我一个nullpointerexception。以下是我所拥有的: public class MainActivity extends Activity { // Add SharedPreference loader int mPlayerCharisma = S

我打算在中使用LoadPreferences和SavePreferences方法。我希望它尽可能灵活,这样我就可以在需要时调用任何“可保存”数据,并在完成对任何类/方法的更改后保存这些数据。当我像任何可返回变量一样设置它时,它会给我一个nullpointerexception。以下是我所拥有的:

public class MainActivity extends Activity {

// Add SharedPreference loader

int mPlayerCharisma = SharedPrefLoader("playerCharisma", 0); //I want variable
// playerCharisma if it exists, and to default to int 0 if it does not
int mPlayerBusiness = SharedPrefLoader("playerBusiness", 0);
int mPlayerCombat = SharedPrefLoader("playerCombat", 0);
int mPlayerLevel = SharedPrefLoader("playerLevel", 0);
int mPlayerLocation = SharedPrefLoader("playerLocation", 0);
int mPlayerMoney = SharedPrefLoader("playerMoney", 500);
int mPlayerEnergy = SharedPrefLoader("playerEnergy", 10);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // ...
    }

    public int SharedPrefLoader(String key, int defValue) {
        SharedPreferences sharedPref = this.getSharedPreferences("drudlordmt",
            MODE_PRIVATE); //This is where  my nullpointerexception points to//
        int returnedValue = sharedPref.getInt(key, defValue);
        return returnedValue;
    }

    public void SharedPrefSaver(String key, int value) {
        SharedPreferences settings = getSharedPreferences("druglordmt", 0);
        SharedPreferences.Editor prefEditor = settings.edit();
        prefEditor.putInt(key, value).commit();
    }
}
从我的阅读中,我明白我需要以某种方式传递我的上下文,但我想确保我仍然可以做我想做的事情。如有任何建议,将不胜感激

谢谢

移动:

int mPlayerCharisma = SharedPrefLoader("playerCharisma", 0); //I want variable
// playerCharisma if it exists, and to default to int 0 if it does not
int mPlayerBusiness = SharedPrefLoader("playerBusiness", 0);
int mPlayerCombat = SharedPrefLoader("playerCombat", 0);
int mPlayerLevel = SharedPrefLoader("playerLevel", 0);
int mPlayerLocation = SharedPrefLoader("playerLocation", 0);
int mPlayerMoney = SharedPrefLoader("playerMoney", 500);
int mPlayerEnergy = SharedPrefLoader("playerEnergy", 10);
(以及对
onCreate()
中的
SharedPrefLoader()
的所有其他调用)。见: