Il problema che ho è:
nella mia applicazione ho 3 attività tutte e 3 con questi snippet:
ecodice: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; }});
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.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); } } }
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.
tv è un TextView, i e out li ho usati per contare quante volte il programma passava di li.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; }});
Spero che qualcuno possa rispondermi... Intanto finisco dell'altro.
Ciao.

LinkBack URL
About LinkBacks
Rispondi quotando
