2011-11-22 26 views
12

Ho seguito i tutorial ufficiali di Android e in qualche modo sto avendo un problema con this very simple example per eseguire una funzione dopo aver premuto "Invio" per un EditText.Android esegue la funzione dopo aver premuto "Invio" per EditText

capisco cosa dovrei fare e sembrano avere impostato tutto correttamente, ma Eclipse ha protestato con questa linea:

edittext.setOnKeyListener(new OnKeyListener() { 

sottolinea setOnKeyListener con l'errore:

The method setOnKeyListener(View.OnKeyListener) in the type View is not applicable for the arguments (new DialogInterface.OnKeyListener(){})

E sottolinea anche OnKeyListener con l'errore:

The type new DialogInterface.OnKeyListener(){} must implement the inherited abstract method DialogInterface.OnKeyListener.onKey(DialogInterface, int, KeyEvent)

Forse qualcuno può spararmi nella giusta direzione? Prima di provare altre soluzioni (che ho già trovato su stackoverflow), mi piacerebbe davvero capirlo perché mi ha agitato che qualcosa di così semplice da seguire, come un tutorial ufficiale, non sembra funzionare.

Grazie in anticipo.

+0

qualcosa di simile? http://stackoverflow.com/questions/4451374/use-enter-key-on-softkeyboard-instead-of-clicking-button/4451825#4451825 – AedonEtLIRA

risposta

13

Da quello che posso vedere, sembra che tu abbia l'importazione sbagliata.

Prova

edittext.setOnKeyListener(new View.OnKeyListener() { 

o aggiungere questa importazione

import android.view.View.OnKeyListener; 

e rimuovere questo uno

import android.content.DialogInterface.OnKeyListener; 
+0

Eccellente, grazie per aver spiegato perché non ha funzionato. Dovrò stare molto attento sulle mie importazioni da ora in poi :) – user1060582

+0

non funziona per me – saravanan

2

Eliminare la dichiarazione di importazione con DialogInterface, quindi importare View.OnKeyListener.

+1

Bello, grazie mille! Questo è quello che ottengo per l'apprendimento di CTRL + SHFT + O prima di qualsiasi cosa. Grazie a tutti quelli che hanno risposto, questo sito è un aiuto fantastico. – user1060582

49

Per ricevere un evento di tastiera, di una vista must hanno messa a fuoco. Per forzare questo uso:

edittext.setFocusableInTouchMode(true); 
edittext.requestFocus(); 

Dopo di che continuare con lo stesso codice dell'esempio:

edittext.setOnKeyListener(new View.OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     // If the event is a key-down event on the "enter" button 
     if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
      (keyCode == KeyEvent.KEYCODE_ENTER)) { 
      // Perform action on key press 
      Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
     return false; 
    } 
}); 
+0

fantastico, grazie !!! Finalmente sto imparando la programmazione #boilerplate di Android –

Problemi correlati