Autore Topic: Clear SharedPreferences  (Letto 946 volte)

Offline Kris

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
Clear SharedPreferences
« il: 20 Ottobre 2013, 00:54:09 CEST »
0
Stò cercando di "resettare" i dati contenuti nella sp.
Codice (Java): [Seleziona]
String name = getPackageName() + "_PREFERENCES";
        SharedPreferences sp = getSharedPreferences(name, MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
    editor.clear();
    editor.commit();
errore:

Codice (Java): [Seleziona]
10-20 00:52:28.979: E/AndroidRuntime(22234): java.lang.IllegalStateException: Could not find a method resettaPassword(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'button1'
10-20 00:52:28.979: E/AndroidRuntime(22234):    at android.view.View$1.onClick(View.java:3722)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at android.view.View.performClick(View.java:4354)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at android.view.View$PerformClick.run(View.java:17962)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at android.os.Handler.handleCallback(Handler.java:725)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at android.os.Looper.loop(Looper.java:137)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at android.app.ActivityThread.main(ActivityThread.java:5328)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at java.lang.reflect.Method.invokeNative(Native Method)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at java.lang.reflect.Method.invoke(Method.java:511)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at dalvik.system.NativeStart.main(Native Method)
10-20 00:52:28.979: E/AndroidRuntime(22234): Caused by: java.lang.NoSuchMethodException: resettaPassword [class android.view.View]
10-20 00:52:28.979: E/AndroidRuntime(22234):    at java.lang.Class.getConstructorOrMethod(Class.java:460)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at java.lang.Class.getMethod(Class.java:915)
10-20 00:52:28.979: E/AndroidRuntime(22234):    at android.view.View$1.onClick(View.java:3715)

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Clear SharedPreferences
« Risposta #1 il: 20 Ottobre 2013, 01:30:32 CEST »
0
i cambierei il nome del SharedPreferences  e parti da pulito

Offline Kris

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
Re:Clear SharedPreferences
« Risposta #2 il: 20 Ottobre 2013, 11:04:16 CEST »
0
Che senso ha cambiare nome. ..
Devo solo capire perché ho l'errore.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Clear SharedPreferences
« Risposta #3 il: 20 Ottobre 2013, 11:48:23 CEST »
0
Che senso ha cambiare nome. ..
Devo solo capire perché ho l'errore.

Citazione
10-20 00:52:28.979: E/AndroidRuntime(22234): java.lang.IllegalStateException: Could not find a method resettaPassword(View) in the activity

Esiste resettaPassword() ?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Kris

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
Re:Clear SharedPreferences
« Risposta #4 il: 20 Ottobre 2013, 12:02:57 CEST »
0
Si, in resettapassword inserisco il codice postato. ....e lo richiamo nell'onClick

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Clear SharedPreferences
« Risposta #5 il: 20 Ottobre 2013, 12:04:48 CEST »
0
Si, in resettapassword inserisco il codice postato. ....e lo richiamo nell'onClick

Però l'errore è dovuto al fatto che "non trova resettaPassword".

Se non puoi postarlo, riguarda il codice attentamente.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Kris

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
Re:Clear SharedPreferences
« Risposta #6 il: 20 Ottobre 2013, 12:32:54 CEST »
0
faccio così
Codice (Java): [Seleziona]
public void resettapassword() (graffa, scusa rispondo con il telefono)
String name = getPackageName() + "_PREFERENCES";
        SharedPreferences sp = getSharedPreferences(name, MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
    editor.clear();
    editor.commit();

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Clear SharedPreferences
« Risposta #7 il: 20 Ottobre 2013, 12:43:07 CEST »
0
Non dovrebbe avere la P di password maiuscola?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Kris

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
Re:Clear SharedPreferences
« Risposta #8 il: 20 Ottobre 2013, 12:49:24 CEST »
0
Si si è che non sono a casa e non ho ho scritto bene. ..

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Clear SharedPreferences
« Risposta #9 il: 20 Ottobre 2013, 12:52:09 CEST »
0
Si si è che non sono a casa e non ho ho scritto bene. ..

Allora se quando sei a casa puoi postare il codice (copia-e-incolla), ci guardiamo.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Kris

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
Re:Clear SharedPreferences
« Risposta #10 il: 20 Ottobre 2013, 17:09:51 CEST »
0
questo è il codice per recuperare la shared e cancellarla
Codice (Java): [Seleziona]
public void resettaPassword(){
        String name = getPackageName() + "_PREFERENCES";
        SharedPreferences sp = getSharedPreferences(name, MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.clear();
        editor.commit();
   
}
questa shared come hai dedotto la utilizzo per memorizzare una password d'ingresso, con un file Login.java nel quale creo la pass e una classe per controllare se quella immessa è giusta......

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Clear SharedPreferences
« Risposta #11 il: 20 Ottobre 2013, 17:39:39 CEST »
0
Ma c'é qualche ragione particolare per cui l' errore dovrebbe essere in questa funzione?

Perché secondo me il logcat dice che é all' esterno. Probabilmente nella classe che contiene questa funzione. Puoi postarla tutta?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Clear SharedPreferences
« Risposta #12 il: 20 Ottobre 2013, 17:40:39 CEST »
0
L'errore riguarda il metodo "resettaPassword(View)", tu hai riportato il codice del metodo "resettaPassword()", in Java sono due funzioni differenti.
adb logcat | tee /tmp/logcat | grep TAG

Offline Kris

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
Re:Clear SharedPreferences
« Risposta #13 il: 20 Ottobre 2013, 17:49:25 CEST »
0
per creare la password utilizzo una finestra di dialogo con questo codice che si trova nello stesso file Java
Codice (Java): [Seleziona]
private void creaPsw(Dialog dialog) {
                EditText psw = (EditText) dialog.findViewById(R.id.psw);
                EditText pswConfirm = (EditText) dialog.findViewById(R.id.psw_confirm);

                String txtPsw = psw.getText().toString();
                String txtPswConfirm = pswConfirm.getText().toString();

                //Controllo se le 2 password sono uguali
                if (txtPsw.equals(txtPswConfirm)) {
                        //Se lo sono le salvo
                        String pswHash = new String(Hex.encodeHex(DigestUtils.sha256(txtPsw)));
                       
                        SharedPreferences sp = getSharedPreferences(getPackageName()+"_PREFERENCES", MODE_PRIVATE);
                        Editor editor = sp.edit();
                        editor.putString(Util.PREF_PSW, pswHash);
                        if (editor.commit()){
                                dialog.dismiss();
                                Toast.makeText(this, getString(R.string.Toast_psw_salvata) , Toast.LENGTH_SHORT).show();

                        } else {
                                Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
                        }

                } else {
                        //Altrimenti l'utente deve re-inserirle
                        Toast.makeText(this, getString(R.string.Toast_psw_diverse) , Toast.LENGTH_SHORT).show();
                        psw.setText("");
                        pswConfirm.setText("");
                        psw.requestFocus();
                }
        }
forse perchè la finestra di dialogo viene aperta dal menu della actionbar??ed il tasto resetPassword si trova nello stesso file XML dove creo la password???non sò se stò dicendo una cavolata....
Codice (Java): [Seleziona]
@Override
        public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                        case R.id.menu_psw:
                                final Dialog dialog = new Dialog(this);
                                dialog.setContentView(R.layout.crea_psw);
                               
                                Button conferma = (Button) dialog.findViewById(R.id.btn_conferma);
                                conferma.setOnClickListener(new OnClickListener()
                               
                               
                                {
                                       
                                        @Override
                                        public void onClick(View v) {
                                                creaPsw(dialog);
                                        }
                                });
                                dialog.setCancelable(true);
                                dialog.show();
                                return true;

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Clear SharedPreferences
« Risposta #14 il: 20 Ottobre 2013, 18:10:51 CEST »
0
Nel messaggio d'errore c'è descritto esattamente il problema (lo riporto senza il tag del codice così non bisogna spostare il riquadro):

10-20 00:52:28.979: E/AndroidRuntime(22234): java.lang.IllegalStateException: Could not find a method resettaPassword(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'button1'

Nel file XML del layout, l'elemento con id "button1" ha l'attributo "android:onClick" impostato con il nome del metodo che non trova nella classe che sta caricando il layout.

La documentazione spiga l'uso corretto dell'attributo "android:onClick":

View | Android Developers

adb logcat | tee /tmp/logcat | grep TAG