Autore Topic: Problema variabile con time  (Letto 473 volte)

Offline fragia

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Note II
  • Sistema operativo:
    Mac OS X
Problema variabile con time
« il: 03 Agosto 2014, 21:39:05 CEST »
0
Salve,

premetto come sempre che sono novello...

e tutto il pomeriggio che provo ma non riesco a capire dove sbaglio, ovviamente il problema potrebbe essere semplice ma per me non è così... in pratica
ho un toast che si attiva dopo tot secondi fissi da un click sul pulsante oppure se compilato anche un campo editext con un volaroe numerico i scondi diventa quelli inseriti e non quelli fissi impostati. il problema è che se compilo il campo editext allaro lo tutto funziona ma se io lascio in bianco il campo (e quindi dovrebbe presende ti secosi fissi) l'ap va in crash.

Codice (Java): [Seleziona]
public class MainActivity extends Activity {
               long DURATA_TIMER=10000;//10mila millisecondi, 10sec.
               Handler m_handler;
                   String _tempo=null;
                   
               @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
               
                final Button button = (Button) findViewById(R.id.button1);
               
                button.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                       
                        // Inserito da me              
                         EditText tempo = (EditText) findViewById(R.id.tempo);
                         _tempo =tempo.getText().toString();
                         
                         if (_tempo  != null)
                         {
                                 DURATA_TIMER = Integer.parseInt(_tempo);
                                // DURATA_TIMER =10000;
                         }
                               
                           //    if (tempo2 !=0)
                           //    {   DURATA_TIMER= tempo2;}
                               else
                                   
                               {   DURATA_TIMER =10000;}
                         // Fine inserito da me
                       
                        // Perform action on click
                    m_handler = new Handler();
             m_handler.postDelayed(time_over,DURATA_TIMER);
                    }
                });
            }
               
               private Runnable time_over = new Runnable() {
                     @Override
                     public void run() {
                            Toast t=new Toast(MainActivity.this);
                            t.makeText(MainActivity.this, "TEMPO TIMER: " + DURATA_TIMER, Toast.LENGTH_LONG).show();
                     }
               };
        }


Codice (Java): [Seleziona]
08-03 14:56:22.532: E/AndroidRuntime(2583): FATAL EXCEPTION: main
08-03 14:56:22.532: E/AndroidRuntime(2583): Process: com.example.time, PID: 2583
08-03 14:56:22.532: E/AndroidRuntime(2583): java.lang.NumberFormatException: Invalid int: ""
08-03 14:56:22.532: E/AndroidRuntime(2583):     at java.lang.Integer.invalidInt(Integer.java:137)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at java.lang.Integer.parseInt(Integer.java:358)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at java.lang.Integer.parseInt(Integer.java:331)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at com.example.time.MainActivity$2.onClick(MainActivity.java:42)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at android.view.View.performClick(View.java:4438)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at android.view.View$PerformClick.run(View.java:18422)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at android.os.Handler.handleCallback(Handler.java:733)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at android.os.Handler.dispatchMessage(Handler.java:95)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at android.os.Looper.loop(Looper.java:136)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at android.app.ActivityThread.main(ActivityThread.java:5017)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at java.lang.reflect.Method.invokeNative(Native Method)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at java.lang.reflect.Method.invoke(Method.java:515)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
08-03 14:56:22.532: E/AndroidRuntime(2583):     at dalvik.system.NativeStart.main(Native Method)

iClaude

  • Visitatore
Re:Problema variabile con time
« Risposta #1 il: 03 Agosto 2014, 23:30:36 CEST »
0
A occhio direi che il motivo è che la riga
_tempo =tempo.getText().toString();
non restituisce mai un valore null, bensì al limite una stringa vuota "", che non è null; quindi se il campo di testo è vuoto verrà cmq eseguita la riga
DURATA_TIMER = Integer.parseInt(_tempo);
restituendo un errore.

Una soluzione veloce è usare nell'if un controllo del tipo:
if(_tempo.length() > 0) ecc.

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Problema variabile con time
« Risposta #2 il: 04 Agosto 2014, 00:08:23 CEST »
0
O ancora più semplice modificare l'if con if(_tempo.equalsIgnoreCase(""))

Offline fragia

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Note II
  • Sistema operativo:
    Mac OS X
Re:Problema variabile con time
« Risposta #3 il: 04 Agosto 2014, 20:51:04 CEST »
0
Ciao,

scusate il ritardo nella risposta :-)

intanto vi ringrazio entrambi per l'aiuto

ho provato entrambi i suggerimenti ma quello di iClaude funziona mentre quello di gabric mi notifica sempre lo stesso errore.

vi volevo chiedere ma se io volessi che 2 immagini si alternassero in una activity in modo continuo dopo aver premuto un tasto mi sapreste indicare qualche dritta?

Grazie

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Problema variabile con time
« Risposta #4 il: 05 Agosto 2014, 10:22:32 CEST »
0
Il mio è sbagliato. Ho dimenticato un ! Poiché quel if deve essere negato

Post unito: 05 Agosto 2014, 13:50:41 CEST
Il mio è sbagliato. Ho dimenticato un ! Poiché quel if deve essere negato
« Ultima modifica: 05 Agosto 2014, 13:50:41 CEST da gabric, Reason: Merged DoublePost »