2014-02-08 5 views
0

Мое намерение иметь метод LoadPreferences и SavePreferences. Я хочу, чтобы он был настолько гибким, насколько это возможно, поэтому я могу запросить любые «разумные» данные, которые будут вызваны, когда мне это нужно, и сохранятся, когда я закончу изменение любого ЛЮБОГО класса/метода. Когда я устанавливаю его как любую возвращаемую переменную, он дает мне nullpointerexception. Вот что у меня есть:Загрузка и сохранение SharedPreferences из методов

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(); 
    } 
} 

Из моего чтения я понимаю, что нужно передать свой контекст как-то, но я хочу, чтобы убедиться, что я все еще могу делать то, что я намерен. Любые предложения будут ценны.

Спасибо!

ответ

0

Move:

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); 

(и все остальные звонки в SharedPrefLoader()) внутри onCreate(). См .: Why getApplicationContext() in constructor of Activity throws null pointer exception?

Смежные вопросы