2017-09-13 3 views
-2

Ich versuche, eine einfache Aufgabenliste App zu erstellen. Ich habe die Zeichenfolge erfolgreich mit SharedPreferences gespeichert, da ich in den Protokollen darauf verweisen kann, aber ich möchte es so einrichten, dass die Zeichenfolge an das Textfeld angehängt bleibt und nicht jedes Mal gelöscht wird, wenn die App erneut geöffnet wird vom Benutzer gelöscht). Irgendwelche anderen Vorschläge würden geschätzt.So speichern Sie Textfield-Antwort ohne zu löschen

(MainActivity)

public void go(View view) { 

    Intent intent1 = new Intent(SecondActivity.this, myPreferences.class); 

    String passGoal1 = goal1.getText().toString(); 

    intent1.putExtra("goal1", passGoal1); 

    startActivity(intent1); 
} 

Auch implementiert myPreferences Klasse wie in der ersten Antwort verwiesen.

public class myPreferences { 

    private SharedPreferences pref; 

    private SharedPreferences.Editor editor; 

    private Context context; 

    int PRIVATE_MODE = 0; 

    private static final String PREF_NAME = "MyPreferencesName"; 

    public final static String KEY_NAME = "key_value"; 

    public myPreferences(Context context) { 

     this.context = context; 

     pref = context.getSharedPreferences(PREF_NAME,PRIVATE_MODE); 

     editor = pref.edit(); 
    } 

    public void setFunction(String data) { 

     editor.putString(KEY_NAME, data); 
    } 
} 

Antwort

1

In Ihrer gemeinsamen Präferenzen machen eine get-Funktion, die die gespeicherten Daten und sehen es jedes Mal in Textfeld

public class MyPreferences { 

private SharedPreferences pref; 

// Editor for Shared preferences 
private SharedPreferences.Editor editor; 

// Context 
private Context context; 

// Shared pref mode 
int PRIVATE_MODE = 0; 

// Sharedpref file name 
private static final String PREF_NAME = "MyPreferencesName"; 

public final static String KEY_NAME = "key_value"; 

public MyPreferences(Context context) { 
    this.context = context; 
    pref = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
    editor = pref.edit(); 
} 

public void setFunction(String data) { 
    editor.putString(KEY_NAME, data); 
    editor.commit(); 
} 

public String getFunction() { 
    return pref.getString(KEY_NAME, ""); 
} 
} 

Und in Ihrer Tätigkeit holen initialisieren SharedPreferences und wie folgt vorgehen:

private MyPreferences myPreferences; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    myPreferences = new MyPreferences(this); 

    //To set EditText data from SavedPreferences 
    textField.setText(myPreferences.getFunction()); 
} 

//To save the latest data from EditText. 
@Override 
protected void onStop() { 
    Log.d("LifeCycle", "onStop: "); 
    super.onStop(); 
    myPreferences.setFunction(editText.getText().toString()); 
} 
+0

Vielen Dank, aber ich bekomme einen Fehler beim Versuch, die AppSettingsPreference-Klasse, irgendwelche Vorschläge zu erstellen? –

+0

Es ist mir eine Freude, Ihnen zu helfen, ich habe meine Antwort bearbeitet, versuche es erneut und hoffe, dass jetzt alles in Ordnung ist. @Ian F. –

+0

Vielen Dank. Eine letzte Frage, sorry, wie kann ich die Daten aus dem Textfeld an diese neue Klasse übergeben? Würde ich es einfach mit einer neuen Absicht hin und her geben? –

Verwandte Themen