Autore Topic: incrementare onclicklistener  (Letto 904 volte)

Offline dragondevil

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus s
  • Sistema operativo:
    windows 7, mac osx 10.6
incrementare onclicklistener
« il: 30 Novembre 2011, 22:43:43 CET »
0
salve a tutti, sono nuovo di qui, e ho già notato che la programmazione di android non è semplice come invece lo è a parole...
quello che devo fare è creare 2 bottoni uno con scritto "+" e l'altro con scritto "-" e alla pressione di uno o l'altro il valore iniziale del textview che è "0" viene decrementato o incrementato...
inizialmente dato che il valore iniziale è 0 il valore stesso può solo salire, quidi se l'utente preme il tasto "-", comparirà un toast con la scritta errore...
ora quello che fin ora ho fatto è la semplice dichiarazione dei bottoni e l'inserimento del valore "0" nel textview...dopo mi sono bloccato perchè mi hanno detto che dovrei incrementare l'onclicklistener di x++ (ovvero di 1), e il problema sta nel fatto che fin ora ho fatto programmi che alla pressione del tasto mi davano un testo (cosa abbastanza semplice), quindi mai usati per eseguire operazioni o altro...
mi potete aiutare??

Zate

  • Visitatore
Re:incrementare onclicklistener
« Risposta #1 il: 30 Novembre 2011, 23:26:01 CET »
+1
Dichiara una variabile che sarà il tuo punteggio:
Codice (Java): [Seleziona]
int punteggio = 0;Nell'onClickListener del'addizione metti:
Codice (Java): [Seleziona]
punteggio ++;
tuaTextView.setText(""+punteggio);
In questo modo il testo della tua textview sarà "" più l'intero punteggio
Nell'onClickListener della sottrazione invece:
Codice (Java): [Seleziona]
if(punteggio == 0){
     Toast.makeText(this,"Testo che comparirà se punteggio == 0", Toast.LENGTH_SHORT);
}else{
     punteggio --;
     tuaTextView.setText(""+punteggio);
}
In questo modo SE l'intero punteggio è uguale a 0 comparirà il toast, altrimenti a questo intero verrà sottratto 1 e il testo della textview diventerà "" più l'intero punteggio

Offline dragondevil

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus s
  • Sistema operativo:
    windows 7, mac osx 10.6
Re:incrementare onclicklistener
« Risposta #2 il: 01 Dicembre 2011, 18:51:26 CET »
0
guarda, ho modificato il progetto in questo:

package esercizio.numero1;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class Esercizion2Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
         final int punteggio=0;
        final int tvTextView = 0;
        final TextView tv=(TextView) findViewById (R.id.tv);
        Button bttn1=(Button) findViewById (R.id.bttn1);
        Button bttn2=(Button) findViewById (R.id.bttn2);
       
      bttn1.setOnClickListener(new OnClickListener (){
           public  void onClick (View v){
              
            punteggio++;
              tv.setText(""+punteggio);
              
           }
        });
      bttn2.setOnClickListener(new OnClickListener(){
         public void onClick (View v){
            if(punteggio<0){
               Toast.makeText(getApplicationContext(),"ERROR",Toast.LENGTH_SHORT);
               
            }
            else{
               
               punteggio-- ;
               tv.setText(""+punteggio);
               
            }
         }
      });
    }
}

e quello che mi da problemi perchè segnalato in rosso è punteggio ++; e punteggio --;
e l'errore è "The final local variable punteggio cannot be assigned, since it is defined in an enclosing type"...
che devo fare??

Zate

  • Visitatore
R: incrementare onclicklistener
« Risposta #3 il: 01 Dicembre 2011, 19:09:27 CET »
0
Dichiara punteggio come una variabile globale (al di fuori dell'onCreate) in modo che possa essere utilizzata in tutta la classe.Togli anche tutti quei final. Poi devi modificare
if(punteggio < 0) in if(punteggio == 0). Se lasciassi punteggio < 0 l'intero punteggio arriverebbe fino a -1 prima di far comparire l'errore.
Non capisco perché hai messo quell'intero tvTextView. Mi sembra inutile.
« Ultima modifica: 01 Dicembre 2011, 19:11:07 CET da Zate »

Offline dragondevil

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus s
  • Sistema operativo:
    windows 7, mac osx 10.6
Re:incrementare onclicklistener
« Risposta #4 il: 01 Dicembre 2011, 19:33:21 CET »
0
Zate, ho reso la variabile punteggio globale come hai giustamente detto tu, e finalmente l'incremento e il decremento funziona...l'unica cosa che non mi funziona è il messaggio del toast alla pressione del tasto - con valore iniziale 0!!

Offline dragondevil

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus s
  • Sistema operativo:
    windows 7, mac osx 10.6
Re:incrementare onclicklistener
« Risposta #5 il: 01 Dicembre 2011, 20:18:26 CET »
0
ok, ho risolto...e funziona tutto alla perfezione...
grazie di tutto zate!!

Zate

  • Visitatore
R: incrementare onclicklistener
« Risposta #6 il: 01 Dicembre 2011, 20:48:35 CET »
0
Di niente ;)