2017-09-13 4 views
-2

J'essaye de créer une application simple de style de liste. J'ai réussi à enregistrer la chaîne en utilisant SharedPreferences, car je peux y faire référence dans les journaux, mais je voudrais faire en sorte que la chaîne reste attachée au champ de texte au lieu d'être effacée chaque fois que l'application est rouverte supprimé par l'utilisateur). Toute autre suggestion serait appréciée.Comment enregistrer la réponse de champ de texte sans effacement

(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); 
} 

classe myPreferences également mis en œuvre comme mentionné dans la première réponse.

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); 
    } 
} 

Répondre

1

Dans vos préférences partagées faire une fonction get que récupérer les données stockées et afficher chaque fois dans textfield

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, ""); 
} 
} 

Et dans votre activité initialize SharedPreferences et procédez comme suit:

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

Merci beaucoup, mais je reçois une erreur en essayant de configurer la classe AppSettingsPreference, des suggestions? –

+0

C'est un plaisir de vous aider, j'ai édité ma réponse, essayez encore et espère que tout va bien maintenant. @Ian F. –

+0

Merci beaucoup. Une dernière question désolé, comment puis-je transmettre les données du champ de texte à cette nouvelle classe? Est-ce que je le passerais juste d'avant en arrière en utilisant une nouvelle intention? –