Ich habe stundenlang auf der Tastatur den Kopf geschlagen. Ich möchte eine inkrementierte Ganzzahl für eine separate Statistikaktivität in meiner App speichern. Ich versuche, die gemeinsamen Einstellungen zu verwenden, um dies zu erreichen. Bei meinem letzten Versuch, der am weitesten fortgeschritten ist, löst das Programm eine Ausnahme aus.Null Objektreferenz mit SharedPreferences
Mein Code:
public class LootChest extends AppCompatActivity {
public static final String prefName = "prefsFile";
SharedPreferences settings = getApplicationContext().getSharedPreferences(prefName, 0); //line 25
int rollCountS = settings.getInt("Roll Count", 0);
int rollCount = 0; //to be incremented
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loot_chest);
}
public void openChest(View v) {
SharedPreferences.Editor editor = settings.edit();
editor.putInt("Roll Count", rollCount);
rollCount = rollCountS + 1;
Die Ausnahme:
Caused by: java.lang.NullPointerException:
Attempt to invoke virtual method
'android.content.SharedPreferences android.content.Context
.getSharedPreferences(java.lang.String, int)'
on a null object reference at android.content.ContextWrapper
.getSharedPreferences(ContextWrapper.java:171)
at net.zingrook.mobiloot.LootChest.<init>(LootChest.java:25)
Ich habe Dutzende von Threads lesen diese auf die Implementierung und schaute auf die Android-Dokumentation und ich bin aus Ideen. Danke für jede Hilfe.
Ich bin kein Android-Programmierer, aber wenn das Problem der Context-Wrapper ist in der Klasse Instanziierung null ist, ist es möglich die Einstellungen sollten nach dem 'onCreate' aufgerufen werden? – KevinO