Il problema che ho è:
nella mia applicazione ho 3 attività tutte e 3 con questi snippet:
codice:
listaApplicazioni.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
if (arg1 == KeyEvent.KEYCODE_DPAD_RIGHT){
azioneItem(listaApplicazioni.getSelectedItemPosition());
return true;
}
return false;
}});
e
codice:
/*
* Launch an activity associated to the action own by the item selected
*/
private void azioneItem(int posizione){
if (posizione >= 0){
String azione = applicazioni.get(posizione).getNomeAzione();
if (!azione.contentEquals("") && azione != null){
Intent in = new Intent(azione);
startActivity(in);
}
}
}
Quindi con questo codice se premo il dpad destro dovrebbe passarmi all'attivita "successiva", ed effettivamente passa a quella successiva, ma quest'ultima intercetta anch'essa la premuta del dpad e quindi mi passa immediatamente a quella dopo, se ci fosse un ulteriore attivita (cioè come nel mio progetto) NON passerebbe, in pratica fa due salti.
Qualcuna sa dirmi perchè? O come fare per ovviare?
Con l'onClick funziona a meraviglia, ma devo fare usare l'applicazione ad un portatore di handicap che lo userebbe con il joystick della carrozzella.
Ho provato a fare anche un semplice programma che intercetta solo la premuta di un tasto e guardando il comportamento con il debugger ho notato che per ogni premuta entra nel listener due volte.
codice:
tv.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){
final Intent in = new Intent(Assalta.this, Assalta.class);
i++;
}
out++;
return false;
}});
tv è un TextView, i e out li ho usati per contare quante volte il programma passava di li.
Spero che qualcuno possa rispondermi... Intanto finisco dell'altro.
Ciao.