Autore Topic: EditTextPreferences numerici  (Letto 1133 volte)

frusso

  • Visitatore
EditTextPreferences numerici
« il: 12 Maggio 2010, 17:00:14 CEST »
0
Salve,

ho la necessità nella finestra delle preferences, di avere un campo di input numerico.
Il semplice EditTextPreference ovviamente accetta ogni tipo di testo ma io devo essere sicuro che venga immessa un numero.

Ho provato nella mia classe che estende PreferenceActivity a fare così


Codice (Java): [Seleziona]
public class MyPreferenceActivity extends PreferenceActivity {

        private EditTextPreference pwdSizeEditText = null;
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                addPreferencesFromResource(R.xml.preferences);
               
                pwdSizeEditText = (EditTextPreference) findPreference(Const.SETTINGS_PASSWORD_LENGTH);
                pwdSizeEditText.getEditText().setImeOptions(InputType.TYPE_CLASS_NUMBER);
               
        }
}

Il file XML delle preferences di riferimento è questo:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

        <PreferenceCategory  android:title="--- Strong Password">
                <EditTextPreference android:key="textPasswordLength" android:title="@string/pref_pwdlen"
                        android:summary="@string/pref_pwdlen_summary" android:defaultValue="8"
                />
               
        </PreferenceCategory>
       
</PreferenceScreen>

QUello che mi aspettavo è che il la tastiera fosse numerica, anche se si poteva cambiare ed inserire caratteri alphanumerici, ma neanche questo funziona.

Come posso fare ? Suggerimenti ?

grazie.
« Ultima modifica: 15 Maggio 2010, 17:27:26 CEST da JD »

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:EditTextPreferences numerici
« Risposta #1 il: 12 Maggio 2010, 18:31:20 CEST »
0
Ciao frusso,
non l'ho testato, ma prova con setInputType invece che con setImeOptions:

TextView | Android Developers

pwdSizeEditText.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);



Saluti.
Qlimax

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:EditTextPreferences numerici
« Risposta #2 il: 12 Maggio 2010, 18:55:39 CEST »
0
Se vuoi impostarlo direttamente nell'XML puoi dare uno sguardo a questo tutorial: http://www.anddev.it/index.php/topic,115.0.html
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

frusso

  • Visitatore
Re:EditTextPreferences numerici
« Risposta #3 il: 12 Maggio 2010, 23:06:47 CEST »
0
Grazie JD, il tuo tutorial l'avevo già letto (e da lì che ho preso l'idea delle ime options)

domani proverò quello che propone Qlimax ma anche se risolvo il problema della tastiera rimane sempre il fatto che devo  fare una validazione dell'input quindi un qualche listener sull'oggetto ce lo devo mettere.

Grazie, vi farò sapere.

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:EditTextPreferences numerici
« Risposta #4 il: 12 Maggio 2010, 23:10:43 CEST »
0
Nel tutorial tratto due attributi: android:imeOptions e android:inputType.
Citazione
Il secondo attributo, android:inputType, serve a specificare il tipo di input che l'EditText deve acquisire.
I tipi disponibili si dividono in 4 classi generiche (text, number, phone e datetime) le quali possono contenere delle varianti (textEmailAddress, textPassword, numberSigned, numberDecimal, etc).

;)

A te dovrebbe servirti
Codice (XML): [Seleziona]
android:inputType="number"
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

frusso

  • Visitatore
Re:EditTextPreferences numerici
« Risposta #5 il: 13 Maggio 2010, 16:41:59 CEST »
0
Ok, grazie

Ho risolto con il suggerimento di Qlimax

Codice (Java): [Seleziona]
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                addPreferencesFromResource(R.xml.preferences);
               
                pwdSizeEditText = (EditTextPreference) findPreference(Const.SETTINGS_PASSWORD_LENGTH);
                //pwdSizeEditText.getEditText().setImeOptions(InputType.TYPE_CLASS_NUMBER);
                pwdSizeEditText.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
               
        }

Io avevo solo impostato l' IME, invece basta l' inputType.
Per la cronaca, la tastiera è cambiabile (cioè posso andare a scegliere i caratteri alphanumerici, ma però non li fa inserire)

Thanks

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:EditTextPreferences numerici
« Risposta #6 il: 13 Maggio 2010, 16:48:52 CEST »
0
In ogni caso, se ho ben capito il problema, avresti potuto inserire direttamente l'attributo android:inputType="number" nella EditTextPreference all'interno del file preferences.xml.
« Ultima modifica: 13 Maggio 2010, 17:30:09 CEST da JD »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

frusso

  • Visitatore
Re:EditTextPreferences numerici
« Risposta #7 il: 13 Maggio 2010, 19:33:52 CEST »
0
Purtroppo no

l'attributo android:inputType è della classe EditText e non della classe EditTextPreference

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:[Risolto] - EditTextPreferences numerici
« Risposta #8 il: 13 Maggio 2010, 19:40:56 CEST »
0
Ho provato con l'SDK 1.6 e funziona perfettamente. Tu che versione stai utilizzando?

Questo è l'XML:
Codice (XML): [Seleziona]
<EditTextPreference
        android:key="edittextpreference"
        android:title="EditTextPreference"
        android:summary="summary"
        android:dialogTitle="dialogTitle"
        android:inputType="number"/>
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

frusso

  • Visitatore
Re:[Risolto] - EditTextPreferences numerici
« Risposta #9 il: 13 Maggio 2010, 19:56:05 CEST »
0
Anch'io.

In effetti hai ragione, non l'ho fatto perchè in Eclipse il code-inside (CTRL + Spazio) non suggeriva quegli attributi e quindi ho pensato che non si potessero applicare.

grazie