Autore Topic: Problema onKeyListener dopo il passaggio da portrait/landscape e viceversa  (Letto 801 volte)

Offline blackleones

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Prima di tutto vorrei ringraziare tutte quelle persone che mi aiuteranno nel risolvere questo problema che per voi sara' di una banalita' assurda, mentre per me.. no :|

Sono uno studente che desidera imparare a sviluppare app per android e data l'occasione ghiotta nel poter sfidare le mie capacita' (presentazione maturita' 2012) ho deciso di creare un semplicissimo notepad, creato prendendo spunto da quello sviluppato da google, che contiene note di un max di 25 caratteri. Facendo i vari test ho trovato alcuni bug tra cui quello che mi ha portato a scrivere questo post perche, dopo disperate ricerche qua e la, non sono riuscito a trovare una soluzione.

il problema: Il mio notepad contiene un EditText all'interno dell'actionbar. Quando clicco su di essa per inserire il testo mi si apre in automatico la tastiera(con il telefono in portrait), scrivo la nota, ed cliccando sul tasto "invio" l'applicazione aggiunge la nota al DB. Stessa cosa vale sia per il tasto DONE/NEXT ed INVIO se scrivo la nota con il telefono in landscape. Il problema giunge qui.. Quando sto scrivendo la nota e da portrait passo a landscape, o viceversa, i tasti DONE/NEXT/INVIO non vengono piu' catturati dall'onKeyListener e, invece d'inviare, mi aggiungono un " a capo". Qualcuno puo' spiegarmi per quale motivo accade cio' e come posso gestire questo evento?

di seguito il codice del listener :) spero di aver spiegato al meglio il mio problema. Grazie mille per l'attenzione!

Codice (Java): [Seleziona]
                                public boolean onKey(View v, int keyCode, KeyEvent event) {

                                if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER) ||
                                   (event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.FLAG_EDITOR_ACTION)){

                                                //questa funzione nasconde la tastiera una volta premuto invio
                                                InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                                                imm.hideSoftInputFromWindow(addNoteET.getWindowToken(), 0);
                                       
                                                //ricavo il testo
                                                String body = addNoteET.getText().toString();
                                                //pulisco
                                                addNoteET.setText("");
                                               
                                                if(body.length() > 0)
                                                {
                                                        Log.d("fn", "if");
                                                        //invio al database la nuova nota
                                                        fnDBhelper.newNote(body);
                                                        refreshListView();
                                                        return true;
                                                }
                                        }      
                                        return false;
                                }});

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema onKeyListener dopo il passaggio da portrait/landscape e viceversa
« Risposta #1 il: 19 Giugno 2012, 15:02:08 CEST »
0
Se non diversamente gestito, ogni qual volta cambi l'orientazione del dispositivo, l'activity corrente viene distrutta e ricreata. E' compito dello sviluppatore catturare l'evento di cambio orientazione, salvare quello che ha bisogno di salvare prima della distruzione della prima activity, quindi ripristinarlo quando viene creata la nuova activity.

Qua trovi un tutorial per comprendere la problematica e valutare varie soluzioni.

[medio] Rotazione dello schermo e onCreate: problema e soluzioni - Android Developers Italia
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline blackleones

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Re:Problema onKeyListener dopo il passaggio da portrait/landscape e viceversa
« Risposta #2 il: 19 Giugno 2012, 15:04:49 CEST »
0
grazie mille per l'aiuto e per il link al tutorial che non avevo trovato! :) Sono riuscito a risolvere il problema spostanto il collegamento del listener all'interno della creazione dell'action bar. Grazie per avermi colmato questa lacuna!

Offline theBaffo

  • Utente normale
  • ***
  • Post: 164
  • Respect: +24
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 8.1
Re:Problema onKeyListener dopo il passaggio da portrait/landscape e viceversa
« Risposta #3 il: 19 Giugno 2012, 15:59:19 CEST »
0
Vedi che ti avevo detto bene!  ;-) ci vediamo al foro!  :-)
Se ti sono stato utile, premi "thanks" ;)

"Errare è umano, ma per incasinare davvero tutto è necessario un computer" - Arthur Bloch