J'essaie de faire en sorte que mon application regarde d'abord si les préférences partagées sont définies. Si ce n'est pas le cas, il faut ouvrir une page où vous les tapez, puis les enregistrer, je les utiliserai plus tard. Il semble qu'il trouve des préférences partagées ou que mon code soit erroné car l'activité principale s'ouvre (l'instruction else s'exécute).Ne pas lire sharedPreferences d'une autre classe
Voici mon MainActivity:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean check = sharedPreferences.getBoolean("Check",false);
if(check){
//Intent intent;
Intent SharedPrefsIntent = new Intent(MainActivity.this, SharedPrefs.class);
startActivity(SharedPrefsIntent); }
else {
setContentView(R.layout.activity_main);
TextView brands = (TextView) findViewById(R.id.brands);
Et voici les SharedPrefs:
public class SharedPrefs extends MainActivity {
//public static Context context;
EditText ed1,ed2,ed3;
Button b1;
public static final String MyPREFERENCES = "MyPrefs" ;
public static final String Name = "nameKey";
public static final String Phone = "phoneKey";
public static final String Email = "emailKey";
SharedPreferences sharedpreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shared_prefs);
ed1=(EditText)findViewById(R.id.editText);
ed2=(EditText)findViewById(R.id.editText2);
ed3=(EditText)findViewById(R.id.editText3);
b1=(Button)findViewById(R.id.button);
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String n = ed1.getText().toString();
String ph = ed2.getText().toString();
String e = ed3.getText().toString();
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(Name, n);
editor.putString(Phone, ph);
editor.putString(Email, e);
editor.commit();
Toast.makeText(SharedPrefs.this,"Thanks",Toast.LENGTH_LONG).show();
}
});
}
}
Je dois être honnête, je ne suis pas tout à fait sûr où je veux Java chercher des préférences partagées, " ce qui rend la course d'application au moins.
'booléen check = sharedPreferences.getBoolean ("Check", faux); Vous essayez de lire cette valeur. Mais où l'avez-vous écrit? – greenapps
Remplacez cette ligne sharedpreferences = getSharedPreferences (MyPREFERENCES, Context.MODE_PRIVATE); par sharedpreferences = PreferenceManager.getDefaultSharedPreferences (this); Et tout premier appel getBoolean() retournera false. alors mettez à jour vos instructions conditionnelles en conséquence – Napolean
Ok, merci Napolean. J'ai changé les getSharedPreferences à votre suggestion et cela fonctionne. J'ai également changé l'instruction if du getBoolean à if (! Check) et maintenant il va à la classe SharedPrefs. Génial. Je mets alors et intentionnellement sous le bouton de soumission pour aller à la classe MainActivity si je soumets, mais alors il le renvoie à la classe SharedPrefs. Ne devrait-il pas alors lire qu'il y a maintenant des préférences partagées et aller à la classe MainActivity? –