Autore Topic: primo problema irrisolvibile  (Letto 414 volte)

Offline gianni123

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg g5ii-nexus7-mb256
  • Sistema operativo:
    win8.1
primo problema irrisolvibile
« il: 28 Novembre 2014, 17:37:43 CET »
0
Buon giorno a tutti!
E' da diversi mesi che seguo il forum principalmente per capire come muovermi nelle mie prime applicazioni android.
Quello di anddev è il progetto italiano più bello trovato fino ad ora, mia opinione ovviamente.

Oggi però mi trovo a scrivere perchè ho un problema, sicuramente banale, ma cercando anche in rete sembra apparentemente che nessuno abbia mai avuto difficoltà simili.
Ci sono su da un giorno e mezzo e credo di avere provato di tutto.
La cosa che voglio che vorrei fare è usare un editText nelle preferences per raccogliere una stringa "stile password" e usare l'evento onPreferenceChange per validarla.
Nel codice che vi posto ho cercato di semplificare ulteriormente la cosa, se il testo inserito è differente da una stringa predefinita vuoto l'editText.
min API 14
Codice: [Seleziona]
public class Impostazioni extends PreferenceActivity {
    private EditTextPreference password;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.impostazioni);

        password = (EditTextPreference) getPreferenceScreen().findPreference("password");

        password.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                Boolean rtnval = true;

                if (!newValue.toString().equals("pwd") && preference.getKey().equals("password")) {
                    password.setText("");
                }
                return rtnval;
            }
        });
    }
}

grazie
Gianni

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:primo problema irrisolvibile
« Risposta #1 il: 28 Novembre 2014, 18:37:34 CET »
0
Mettendo un Log.d() dentro onPreferenceChange (ma non dentro l'if), l'esecuzione ci passa?

In caso affermativo c'è qualcosa che non va nella condizione dell'if.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline gianni123

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg g5ii-nexus7-mb256
  • Sistema operativo:
    win8.1
Re:primo problema irrisolvibile
« Risposta #2 il: 28 Novembre 2014, 18:45:44 CET »
0
Sì,in debug nell'if ci entra.
Ma anche levando l'if completamente, non cambia niente. L'edit si tiene in pancia il testo che aveva prima di far partire l'onPreferenceChange.

Non fidandomi del setText, ho provato ad usare anche l'editor delle SharedPreferences usando poi il putString con relativo commit.

Edit:
anche facendo così
Codice (Java): [Seleziona]
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                Boolean rtnval = true;

                //if (!newValue.toString().equals("pwd")) {
                    password.setText("");
                    Log.d("DEBUG","pippo");

                return rtnval;
            }

ma il testo non si vuota

Logcat

11-28 18:48:17.099  11017-11017/it.abc.test D/dalvikvm﹕ GC_FOR_ALLOC freed 44K, 2% free 9100K/9223K, paused 14ms, total 17ms
11-28 18:48:17.228  11017-11017/it.abc.test I/SurfaceTextureClient﹕ [void android::SurfaceTextureClient::init()] debug.stc.fps: 3000 ms
11-28 18:48:44.229  11017-11017/it.abc.test D/DEBUG﹕ pippo
« Ultima modifica: 28 Novembre 2014, 19:01:54 CET da gianni123 »

Offline arlabs

  • Utente normale
  • ***
  • Post: 433
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:primo problema irrisolvibile
« Risposta #3 il: 29 Novembre 2014, 18:55:18 CET »
0
provato con:

Codice (Java): [Seleziona]
password.getEditText().setText("");
?

Offline gianni123

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg g5ii-nexus7-mb256
  • Sistema operativo:
    win8.1
Re:primo problema irrisolvibile
« Risposta #4 il: 30 Novembre 2014, 16:54:23 CET »
0
provato no
funziona no. :(

Offline gianni123

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg g5ii-nexus7-mb256
  • Sistema operativo:
    win8.1
Re:primo problema irrisolvibile
« Risposta #5 il: 02 Dicembre 2014, 01:12:21 CET »
0
mistero RISOLTO!!
Codice (Java): [Seleziona]
 @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                if (!newValue.toString().equals("pwd")) {
                    password.setText("");

                    //Log.d("DEBUG","pippo");

                    return false;
                } else {
                    return true;
                }
continuavo a ritornare true! ..che dormita...
GRAZIE!!