Autore Topic: Click di 2 tasti alternato  (Letto 1258 volte)

Offline sandro98

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Express 2
  • Sistema operativo:
    Windows 7
Click di 2 tasti alternato
« il: 01 Agosto 2014, 11:21:06 CEST »
0
.
« Ultima modifica: 22 Agosto 2014, 20:07:59 CEST da sandro98 »

Offline Paso

  • Utente junior
  • **
  • Post: 98
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy sIII mini
  • Sistema operativo:
    Linux Mint 17 64-bit
Re:Click di 2 tasti alternato
« Risposta #1 il: 02 Agosto 2014, 19:17:10 CEST »
+1
Ciao Sandro98,
cominciamo dalle cose basilari:
Codice (Java): [Seleziona]
TextView tvCounter = (TextView) findViewById(R.id.counter);Questa riga di codice falla diventare:
Codice (Java): [Seleziona]
// Activity
TextView tvCounter;
//onCreate
tvCounter = (TextView) findViewById(R.id.counter);
Non è efficiente tutte le volte che clicchi cercarla di nuovo

Seconda cosa: perchè non usi una variabile globale per settare il testo al posto di prenderlo tutte le volte da tvCounter?
Terzo: io ti consiglio ti usare una variabile booleana globale che indichi la textView che è stata cliccata l'ultima volta e in base a quella agire.
Per esempio:
Codice (Java): [Seleziona]
//Activity
private int contatore = 0;
private boolean button; // se non dichiari nulla se non ricordo male è false come valore predefinito
//onClick del bottone 1
contatore++;
if(button) {
contatore++;
}
else {
contatore = 0;
}
button = false;
tvCounter.setText(contatore + ""); // ""  serve a fare il casting della variabile
}
//onClick del bottone 1
contatore++;
if(!button) {
contatore++;
}
else {
contatore = 0;
}
button = true;
tvCounter.setText(contatore + ""); // ""  serve a fare il casting della variabile
}
Fammi sapere se funziona. In tal caso metti THANKS e RISOLTO

Offline sandro98

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Express 2
  • Sistema operativo:
    Windows 7
Re:Click di 2 tasti alternato
« Risposta #2 il: 03 Agosto 2014, 16:22:55 CEST »
0
.
« Ultima modifica: 22 Agosto 2014, 20:08:49 CEST da sandro98 »

Offline Paso

  • Utente junior
  • **
  • Post: 98
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy sIII mini
  • Sistema operativo:
    Linux Mint 17 64-bit
Re:Click di 2 tasti alternato
« Risposta #3 il: 04 Agosto 2014, 00:19:30 CEST »
+1
La prima parte nel bottone 1 e la seconda nel bottone 2, ho sbagliato a scrivere 2 volte bottone 1.
La variabile che tu hai chiamato "volte" io l'ho chiamata contatore.

In ogni caso questo non era un problema strettamente relativo ad android ma più logico, quindi se non hai mai programmato prima ti consiglio di fare un po' di pratica con qualcosa di più semplice di Android per capire come funzionano le variabili soprattutto!

Offline sandro98

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Express 2
  • Sistema operativo:
    Windows 7
Re:Click di 2 tasti alternato
« Risposta #4 il: 04 Agosto 2014, 10:11:21 CEST »
0
.
« Ultima modifica: 22 Agosto 2014, 20:09:15 CEST da sandro98 »

Offline Paso

  • Utente junior
  • **
  • Post: 98
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy sIII mini
  • Sistema operativo:
    Linux Mint 17 64-bit
Re:Click di 2 tasti alternato
« Risposta #5 il: 04 Agosto 2014, 15:41:06 CEST »
+1
Riporta il codice completo dell'activity e la parte rossa del LogCat

Edit: Ho provato il codice e funziona; unico errore mio è aver messo "contatore++;" appena clicchi uno dei due bottoni che è da togliere se no la numerazione va di 2 in 2, ma certamente non è la causa del crash
« Ultima modifica: 04 Agosto 2014, 16:00:03 CEST da Paso »

Offline sandro98

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Express 2
  • Sistema operativo:
    Windows 7
Re:Click di 2 tasti alternato
« Risposta #6 il: 04 Agosto 2014, 18:03:20 CEST »
0
.

« Ultima modifica: 22 Agosto 2014, 20:09:37 CEST da sandro98 »

Offline Paso

  • Utente junior
  • **
  • Post: 98
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy sIII mini
  • Sistema operativo:
    Linux Mint 17 64-bit
Re:Click di 2 tasti alternato
« Risposta #7 il: 05 Agosto 2014, 19:33:07 CEST »
+1
Per il LogCat copia e incolla il testo usando "[ code ][/ code ]" la prossima volta. E già appena apri un nuovo topic dovresti postare sia il codice che hai scritto relativo all'errore e la parte in rosso del logcat. C'è IL regolamento che spiega come postare in modo corretto.

Ecco il mio codice:
Codice (Java): [Seleziona]
public class MyActivity extends Activity {

    private TextView textView;
    private Button btn1;
    private Button btn2;

    private int contatore = 0;
    private boolean button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        textView = (TextView) findViewById(R.id.textView);
        btn1 = (Button) findViewById(R.id.btn_1);
        btn2 = (Button) findViewById(R.id.btn_2);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(button) {
                    contatore++;
                }
                else {
                    contatore = 0;
                }
                button = false;
                textView.setText(contatore + "");
            }
        });
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!button) {
                    contatore++;
                }
                else {
                    contatore = 0;
                }
                button = true;
                textView.setText(contatore + "");
            }
        });
    }
}

Edit: Prima di copiare il codice ti consiglio di fare la formattazione automatica per facilitare la lettura; su Android Studio è crtl+alt+i , su Eclipse non ricordo.
« Ultima modifica: 05 Agosto 2014, 19:37:37 CEST da Paso »

Offline sandro98

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Express 2
  • Sistema operativo:
    Windows 7
Re:Click di 2 tasti alternato
« Risposta #8 il: 06 Agosto 2014, 12:16:54 CEST »
0
.
« Ultima modifica: 22 Agosto 2014, 20:10:01 CEST da sandro98 »

Offline Paso

  • Utente junior
  • **
  • Post: 98
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy sIII mini
  • Sistema operativo:
    Linux Mint 17 64-bit
Re:Click di 2 tasti alternato
« Risposta #9 il: 08 Agosto 2014, 10:19:01 CEST »
+1
Meno male!  ;-) Metti "topic risolto" con l'apposito pulsante così chi vuole aiutare non perdede tempo aprendo il post e chi cerca soluzioni ai suoi problemi sa qua è stato già risolto!

Offline sandro98

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Express 2
  • Sistema operativo:
    Windows 7
Re:Click di 2 tasti alternato
« Risposta #10 il: 09 Agosto 2014, 19:46:23 CEST »
0
.
« Ultima modifica: 22 Agosto 2014, 20:11:03 CEST da sandro98 »

Offline Paso

  • Utente junior
  • **
  • Post: 98
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy sIII mini
  • Sistema operativo:
    Linux Mint 17 64-bit
Re:Click di 2 tasti alternato
« Risposta #11 il: 10 Agosto 2014, 13:35:28 CEST »
+1
Ho corretto l'errore per il quale si azzerava tutte le volte.
Codice (Java): [Seleziona]
public class MyActivity extends Activity {

    private TextView textView;
    private Button btn1;
    private Button btn2;

    private static int n1 = 2;
    private static int n2 = 2;
    private int cont1 = 0;
    private int cont2 = 2;
    private int contatore = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        textView = (TextView) findViewById(R.id.textView);
        btn1 = (Button) findViewById(R.id.btn_1);
        btn2 = (Button) findViewById(R.id.btn_2);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (n2 == cont2  && (n1-1) > cont1)  {
                    cont1++;
                    contatore++;
                }
                else if (n2 == cont2  && (n1-1) == cont1){
                    cont1++;
                    contatore++;
                    cont2 = 0;
                }
                else {
                    cont1 = n1;
                    cont2 = 0;
                    contatore = 0;
                }
                textView.setText("" +contatore);
            }

        });
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (n1 == cont1  && (n2-1) > cont2)  {
                    cont2++;
                    contatore++;
                }
                else if (n1 == cont1  && (n2-1) == cont2){
                    cont2++;
                    contatore++;
                    cont1 = 0;
                }
                else {
                    cont2 = n2;
                    cont1 = 0;
                    contatore = 0;
                }
                textView.setText("" +contatore);
            }
        });
    }
}
Le variabili che potrebbero servirti in futuro fuori dall'onCreate ti conviene dichiararle fuori altrimenti non verrebbero considerate.
Ovviamente il codice si può sempificare ma se devi fare un giochino puoi usare questa activity per tutte le combinazioni di tasti, basta cambiare n1 e n2 prendendo i parametri con un getExtra dall'activity che che ha chiamato.

Offline sandro98

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Express 2
  • Sistema operativo:
    Windows 7
Re:Click di 2 tasti alternato
« Risposta #12 il: 10 Agosto 2014, 21:08:41 CEST »
0
.
« Ultima modifica: 22 Agosto 2014, 20:13:22 CEST da sandro98 »

Offline Paso

  • Utente junior
  • **
  • Post: 98
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy sIII mini
  • Sistema operativo:
    Linux Mint 17 64-bit
Re:Click di 2 tasti alternato
« Risposta #13 il: 11 Agosto 2014, 11:49:58 CEST »
0
Per andare a capo basta usare il carattere di escape "\n" se non ricordo male.
Il metodo finish() chiude l'activity attuale quindi nel setNegativeButton non c'è bisogno che usi starActivity perchè viene chiamata automaticamente l'activity precedente.
Per la questione del contatore non so perchè, prova a sostituire
Codice (Java): [Seleziona]
punteggio=contatore; // sostituisci con..
punteggio = Integer.valueOf(tvCounter.getText().toString()); // non son sicuro sia grammaticalmente corretto, ma il senso è quello
Se non fuziona allora metti nel costruttore della classe la variabile punteggio così glielo passi come parametro e sicuramente hai risolto. Più o meno così:
Codice (Java): [Seleziona]
public class MalibuCountDownTimer extends CountDownTimer {
                int Punteggio = 0; // se lo usi solo in questa classe dichiaralo qua!
               public MalibuCountDownTimer(long startTime, long interval, int punteggio ) {  //queato costruttore MAGARI è d'obbligo siccome estendi un'altra classe
                        super(startTime, interval,);
                        this.Punteggio = punteggio;
                }
/*
                public MalibuCountDownTimer(long startTime, long interval ) {  //queato costruttore MAGARI è d'obbligo siccome estendi un'altra classe
                        super(startTime, interval);
                }
*/

                @Override
                public void onFinish() {
                        text.setText("Finished!");                    
                        punteggio=contatore; // togli pure sta riga se passi il punteggio come parametro
                        if (punteggio>record)
                                record=punteggio;
                        AlertDialog alert = miaAlert.create();
                        alert.show();
                }
                @Override
                public void onTick(long millisUntilFinished) {
                        text.setText(" " + millisUntilFinished / 1000);
                        s1 = millisUntilFinished;
                }
        }

Offline sandro98

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Express 2
  • Sistema operativo:
    Windows 7
Re:Click di 2 tasti alternato
« Risposta #14 il: 11 Agosto 2014, 18:00:18 CEST »
0
.
« Ultima modifica: 22 Agosto 2014, 20:13:53 CEST da sandro98 »