Probleme mit sharedPreferences

D

DmanT

Neues Mitglied
Threadstarter
Hallo.

Ich erstelle mir derzeit eine App. Das klappt auch eigentlich ganz wunderbar, solange ich alles in dem Code der aktivity mache.

Nun setze ich jedoch Fragmente ein. Auch das klappt wunderbar, solange die Daten nicht dynamisch kommen.

Nun wollte ich in dem Fragment Code auf die SharedPrferences und auf die TaxtViews zugreifen wegen setText usw.

Das landet aber immer in einem NullPointer.

Was mache ich falsch?
 
1

123thomas

Fortgeschrittenes Mitglied
Hallo,

die Frage ist ja wie machst du es denn?

Ein bisschen Code wäre nicht schlecht.

Gruß
Thomas
 
D

DmanT

Neues Mitglied
Threadstarter
Hallo,

also, in der Main nutze ich folgendes:
Code:
...
    public static final String mypreference = "mypref";
    public static String UNIQUEID;

    //sharedpreferences.getString("UNIQUEID", "0");

    //SharedPreferences.Editor editor = sharedpreferences.edit();
    //editor.putString(Name, n);
    //editor.commit();

    SharedPreferences sharedpreferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        sharedpreferences = getSharedPreferences(mypreference, Context.MODE_PRIVATE);
        Log.d("RESPONSE", "PREF: " + sharedpreferences.getString("UNIQUEID", "HOMESITE"));
        UNIQUEID = sharedpreferences.getString("UNIQUEID", "0");
...
Das klappt alles wunderbar. Und auch wenn ich hier ändere etc. keinerlei Probleme.
Die Fragmente lasse ich wie folgt anzeigen:
Code:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.frame_content, new Home());
ft.commit();
Auch das klappt wunderbar. Wenn ich nun aber auf die sharedPreferences zugreifen will sind diese immer leer. Habe es nun hinbekommen keinen Null Pointer zu bekommen aber die sind leer, bzw. die eigenen sind gefüllt, also so als ob jedes Fragment seine eigenen geschlossenen sharedPreferences hat.

Der Fragmentblock
Code:
...
SharedPreferences sharedpreferences;
final SharedPreferences.Editor editor = sharedpreferences.edit();
...
@Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        sharedpreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
        editor.putString("TEST", "test");
        editor.commit();
        Log.d("RESPONSE", sharedpreferences.getString("UNIQUEID", "0"));
        Log.d("RESPONSE", sharedpreferences.getString("TEST", "0"));
In Test steht test drinne, UNIQUEID bleibt leer.
 
J

jogimuc

Erfahrenes Mitglied
Hallo
in einem Fragment brauchst du immer den Context der Activity.
versuche es mal so.

SharedPreferences sharedpreferences = getActivity().getSharedPreferences(Main_Activity.mypreference, Context.MODE_PRIVATE);

Dann wird es auch keinen NullPointer geben.
 
Zuletzt bearbeitet:
D

deek

Stammgast
Wo schreibst du denn UNIQUEID? Das kann ich hier nirgendwo finden.
 
J

jogimuc

Erfahrenes Mitglied
@deek in der Main Definiert er einen String
public static String UNIQUEID;

und den weist er auch die Gleichnamige pref zu
UNIQUEID = sharedpreferences.getString("UNIQUEID", "0");

Das UNIQUEID steht in der Methode in Anführungs- Zeichen.

Im Fragment benutzt er auch die Anführungs –Zeichen
Log.d("RESPONSE", sharedpreferences.getString("UNIQUEID", "0"));

Somit ist das Ok und kein Fehler. Ob das sinn macht ist ein anderes Thema.

Ich gehe mal davon aus das er die „Pref „"UNIQUEID irgendwo mit einem „Editor“ und „Commit“ angelegt, gespeichert hat. Ich betrachte das nur als Beispiel.

Das er die falsche Sharedpreferences Datei auswählt liegt an dem fehlenden Kontext der Activity. Hatte ich schon gesagt.
 
Zuletzt bearbeitet:
Oben Unten