Ich kann nicht arbeiten, wie in einer anderen Klasse geteilt Präferenzen zu verwenden, dieWelcher Kontext für gemeinsame Einstellungen in einer anderen Klasse?
hier kein Fragment oder irgendetwas ist, ist mein Hauptaktivitätscode:
public class MainActivity extends AppCompatActivity {
Backgrounds backs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
backs = new Backgrounds(this);
bg = (LinearLayout) findViewById(R.id.background);
bg.setBackgroundColor(getResources().getColor(backs.getBackground()));
}
}
Und hier eine Klasse meines Hintergrunds ist:
public class Backgrounds {
Integer colors[] = {
R.color.red,
R.color.pink,
R.color.purple,
};
private context;
SharedPreferences sharedPref = context.getSharedPreferences("file", 0);
SharedPreferences.Editor editor = sharedPref.edit();
int i = sharedPref.getInt("background", -1);
public Backgrounds(Context context)
{
this.context = context
}
public int getBackground()
{
i++;
try{
editor.putInt("factIndex", i);
editor.commit();
return colors[i];
}catch (Exception e){
i = 0;
editor.putInt("factIndex", i);
editor.commit();
return colors[i];
}
}
}
Ich habe diese vielen Möglichkeiten ausprobiert. Ich bin fast sicher, dass es ein Problem mit dem Kontext Teil des Codes ist, wie ich diesen Fehler:
Verursacht durch: java.lang.NullPointerException: Der Versuch, virtuelle Methode ‚aufzurufen android.content.SharedPreferences android.content.Context .getSharedPreferences (java.lang.String, int) 'auf einem Nullobjekt Referenz
Ich habe es auch versucht mit context.getApplicationContext(), aber der Fehler war ähnlich. Ich dachte es könnte sein, weil ich das Assing des Backs-Objekts in onCreate() verschieben musste, aber das funktioniert immer noch nicht. Ich habe das Projekt gereinigt und Dateien mit Gradle synchronisiert, aber das Programm stürzt immer noch ab, bevor es lädt. Der Code funktioniert perfekt beim Entfernen von SharedPrefrences.
An dem Punkt, Sie 'sharedPref' zuweisen machen,' context' ist 'null'. Verschieben Sie die Zuordnung von 'sharedPref' und' editor' zum Konstruktor – Bene