2013-03-03 13 views
8

Ich weiß nicht, was damit zu tun mehrApp hält sharedpreferences beim Neustart

scheint zu funktionieren gut mit Android 3.0 und höher, aber auf Android 2.3.3 jedes Mal, wenn ich die Anwendung zu starten ist es zu vergessen frage nach dem Benutzernamen/Passwort erneut.

Ich verwende die gemeinsamen Einstellungen.

Hier ist, wie ich sparen Vorlieben:

 SharedPreferences preferences = MyApplication.getAppContext().getSharedPreferences("athopbalance", MODE_PRIVATE); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putString("username", username).commit(); 
     editor.putString("password", password).commit(); 

Und hier ist, wie ich sie lesen:

SharedPreferences preferences = MyApplication.getAppContext().getSharedPreferences("athopbalance", Context.MODE_PRIVATE); 
    String username = preferences.getString("username", ""); 
    String password = preferences.getString("password", ""); 

Ich habe auch versucht, die Einstellungen zu speichern diesen Code verwenden:

 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext()); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putString("username", username).commit(); 
     editor.putString("password", password).commit(); 

Und die lasen sie mit diesem Code:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext()); 
    String username = preferences.getString("username", ""); 
    String password = preferences.getString("password", ""); 

Aber es funktioniert auch nicht.

Das Problem ist, bevor ich die Anwendung neu starten kann ich sehen, dass sie immer noch da sind. Aber sobald ich den Neustart mache - bekomme ich am Ende "" (leere Zeichenfolge) für den Benutzernamen und "" für das Passwort.

Irgendwelche Ideen stark

geschätzt würde

Antwort

0

Ich weiß nicht genau, was passiert ist, aber nachdem ich neu gestartet habe, ist das Emulatorproblem verschwunden.

Leider Zeit

+0

Das gleiche Problem hier und es ging nach dem Neustart genau wie deins. Wirklich seltsam… – Victor

1

Versuchen Sie folgendes:

SharedPreferences preferences = context.getSharedPreferences("YOUR_TAG", 0); 
String username = preferences.getString("username", ""); 
String password = preferences.getString("password", ""); 


    SharedPreferences.Editor editor = preferences.edit(); 
    editor.putString("username", username).commit(); 
    editor.putString("password", password).commit(); 

wo Kontext der Kontext Ihrer Anwendung ist:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


     context = this; 
+0

Hallo, vielen Dank für Ihren Kommentar. Ich mache das gleiche in meinem ersten Beispiel, aber ich fürchte, es funktioniert nicht –

+0

mit Ihrer Aktivität anstelle von MyApplication versuchen. – Gyonder

+0

Ich habe getApplicationContext() aufgerufen, anstatt den Kontext aus der Aktivität zu übergeben. –

2
public class MyApplication extends Application { 
    private static MyApplication instance; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Log.d(TAG, "onCreate() called"); 
    } 

    public MyApplication() { 
     super(); 
     Log.d(TAG, "Constructor called"); 
     instance = this; 
    } 


    public static MyApplication getApplication() { 
     if (instance == null) { 
      instance = new MyApplication(); 
     } 
     return instance; 
    } 
} 

Und Nutzung:

MyApplication.getApplication().getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE) 
+0

Ihr Beispiel speichert die 'neue MyApplication' nicht vor dem Zurückgeben in die Instanz, so dass das Zwischenspeichern nie stattfindet. – mikebabcock

+0

Danke, ich werde es versuchen –

+0

behoben das Problem von mikebabcock. Vielen Dank! – agamov

Verwandte Themen