Autore Topic: Ottenere valore corrente NumberPicker  (Letto 1139 volte)

Offline yagamiraito

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung I5500 corby
  • Sistema operativo:
    Windows 7
Ottenere valore corrente NumberPicker
« il: 14 Giugno 2012, 10:48:34 CEST »
0
In un activity utilizzo un android.widget.NumberPicker

Premendo un bottone di salvataggio vorrei ottenerne il valore corrente:
Codice (Java): [Seleziona]
Object o = activity.findViewById(numberPickId);
Class<? extends Object> c = o.getClass();
Method m = c.getMethod("getCurrent");
return (Integer) m.invoke(o);  

Questo funziona ma solo se il focus non è nel numero del numberPicker
Anche premendo "Fine" dalla tastierina che si apre il focus rimane nel numero del numberPicker.
Premendo il bottone di salvataggio il nuovo numero non viene considerato.
Cosa devo fare?

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:Ottenere valore corrente NumberPicker
« Risposta #1 il: 14 Giugno 2012, 12:58:44 CEST »
0
Ignoro il motivo dell'utilizzo dei reflect quando basta un semplice e molto più efficiente cast.
Dalla documentazione ufficiale il metodo "getCurrent" esiste nella classe Drawable ma non nella classe NumberPicker presente dal API 11, quindi ho dei forti dubbi sul funzionamento anche in un caso particolare.
adb logcat | tee /tmp/logcat | grep TAG

Offline yagamiraito

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung I5500 corby
  • Sistema operativo:
    Windows 7
Re:Ottenere valore corrente NumberPicker
« Risposta #2 il: 14 Giugno 2012, 13:09:32 CEST »
0
Devo usare API 9 e quindi la classe NumberPicker non c'è. Non posso fare il cast.
O meglio, non ho capito come eventualmente farlo.

getCurrent funziona, ma solo se il valore è stato confermato

Codice del numberPicker che ha anche getcurrent:

 android.widget.NumberPicker (Java2HTML)

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:Ottenere valore corrente NumberPicker
« Risposta #3 il: 14 Giugno 2012, 13:56:40 CEST »
+1
Ho esaminato i sorgenti di Android API 9, la NumberPicker esiste come classe non pubblica, non documentata con metodi diversi rispetto a quella presente dal API 11. Il metodo "getCurrent" effettivamente esiste e ritorna un intero, per poterlo richiamare devi usare i reflect, come tutti i metodi non documentati l'utilizzo è a rischio di chi decide di utilizzarlo. Ignoro il motivo del funzionamento solo col focus, la classe internamente usa una EditText e da quello che vedo convalida l'input del EditText al cambio di focus e al click dei bottoni.
adb logcat | tee /tmp/logcat | grep TAG

Offline yagamiraito

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung I5500 corby
  • Sistema operativo:
    Windows 7
Re:Ottenere valore corrente NumberPicker
« Risposta #4 il: 14 Giugno 2012, 14:17:05 CEST »
0
Ho risolto dando il focus al bottone di salvataggio quando premuto.
grazie

Offline mauro21

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: 0
    • Mostra profilo
Re:Ottenere valore corrente NumberPicker
« Risposta #5 il: 05 Luglio 2012, 16:24:00 CEST »
0
scusate riapro. Mi servirebbe un NumberPicker ma proprio non riesco a trovare esempi su come si possa usare

mi date qualche pezzo di codice?? In pratica devo selezionare un numero che poi sarà parametro per dei grafici

grazie