0

Je ne suis pas sûr de ce que je fais mal. Dans mon application, j'essaie de le faire se souvenir d'un mot de passe précédent entré dans le champ de texte sur soumettre. De la recherche effectuée en utilisant des préférences partagées en sauvegardant la variable même si l'application a redémarré. Haut de mon code:SharedPreferences dans l'application Android pour rappelez-moi bouton

public class AK_Voucher_access extends BT_fragment{ 

View thisScreensView = null; 

String errormessage = ""; 
String errormessageTextColor = ""; 
String errormessageText = ""; 
String rememberTextText = ""; 
String rememberTextTextColor = ""; 
String voucherTextfieldPlaceholder = ""; 
String voucherTextfieldSecureTextEntry = ""; 
boolean voucherTextfieldSecureTextEntryBool = false; 
String iphoneImage = ""; 
String ipadImage = ""; 
String errormessageInvalid = ""; 
String errormessageRemember = ""; 

private TextView errormessageTextView = null; 
private EditText voucherTextfieldEditText = null; 
private ImageView imageView = null; 
private Button submitButton = null; 
private Switch rememberSwitch = null; 

private Drawable myHeaderImageDrawable = null; 
private String alphaImage = "", pass; 
private static BT_item screenObjectToLoad = null; 
private static final String PASSVALUE = "value"; 
//private static final String appPassword = "appPassword"; 
Context context; 

Pour récupérer textfield lorsque jeu:

if (rememberSwitch.isChecked()) { 
      BT_debugger.showIt(fragmentName + ":rememberSwitch is ON"); 

     SharedPreferences settings = context.getSharedPreferences(PASSVALUE, MODE_PRIVATE); 

     String rpass= settings.getString("rpassword",""); 


      if (rpass!=null) { 
        voucherTextfieldEditText.setText(rpass); 
      } else { 
       voucherTextfieldEditText.setText("nono"); 
      } 

    } 
    else { 
     BT_debugger.showIt(fragmentName + ":rememberSwitch is OFF"); 
     // switchStatus.setText("Switch is currently OFF"); 
    } 

Alors mon code pour enregistrer la chaîne sur soumettre:

if (loadScreenNickname.length() > 1 && !loadScreenNickname.equalsIgnoreCase("none")) { 

       // before we launch the next screen... 
       if (!rememberSwitch.isChecked()) { 
        voucherTextfieldEditText.setText(""); 
       } 

       if (rememberSwitch.isChecked()){ 
        //voucherTextfieldEditText.setText(""); 

        String pass = voucherTextfieldEditText.getText().toString(); 
        BT_debugger.showIt(pass + ":CODE"); 

        SharedPreferences settings = context.getSharedPreferences(PASSVALUE, MODE_PRIVATE); 
        settings.edit().putString("rpassword", pass).apply(); 

        rememberSwitch.setChecked(true); 



       } 
       errormessageTextView.setVisibility(View.GONE); 
       errormessageTextView.invalidate(); 

       //loadScreenObject(null, thisScreen); 
       try { 
        loadScreenWithNickname(loadScreenNickname); 

        foundIt = 1; 

       } catch (Exception ex){ 
        Log.e ("eTutorPrism Error", "Caught this exception " + ex); 
        ex.printStackTrace(); 
       } 
       break; 
      } 
     } 

Cependant les heures supplémentaires que je lance le plug-in dans mon application Je reçois cette erreur dans le logcat:

E/UncaughtException: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference 
                   at com.asfapp.ui.bt_plugins.AK_Voucher_access.onCreateView(AK_Voucher_access.java:210) 


E/AndroidRuntime: FATAL EXCEPTION: main 
                 Process: com.asfapp, PID: 24771 
                 java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference 
                  at com.asfapp.ui.bt_plugins.AK_Voucher_access.onCreateView(AK_Voucher_access.java:210) 

Pas sûr de ce qui ne va pas avec le code cette fois mais tout devrait aider.

Répondre

1

utiliser ce code pour obtenir SharedPreference dans fragment

SharedPreferences preferences = this.getActivity().getSharedPreferences("myPref", Context.MODE_PRIVATE); 
1

essayer

Context context = getApplicationContext(); 
SharedPreferences settings = context.getSharedPreferences(PASSVALUE, context.MODE_PRIVATE); 

Vous obtenez NullPointerException parce que le contexte est défini. Définissez-le avant d'appeler votre context.getSharedPreference() ou utilisez une autre méthode, par exemple getApplicationContext(). GetSharedPreference().

1

définissez-vous le contexte?

Context context; 

Je n'ai pas vu la valeur du contexte ici. peut-être c'est la raison pour laquelle son retour NullPointerException vous devriez le définir avec l'activité ou le contexte. Et vous pouvez aussi le faire à la place faire contexte var: getApplicationContext().getSharedPreferences() Ou getActivity().getSharedPreferences()