Por qué El constructor ArrayAdapter <String> (nuevo View.OnKeyListener () {}, int, String ) no está definido

Por qué El constructor ArrayAdapter (nuevo View.OnKeyListener () {}, int, String []) no está definido en mi codificación. Esta codificación es para buscar datos de SQLite al escribir el recuento de palabras tiene más de 3 caracteres. Pero, está mostrando el siguiente error.

El constructor ArrayAdapter (nuevo View.OnKeyListener () {}, int, String []) no está definido

ed1 = (AutoCompleteTextView)findViewById(R.id.searchWord); ed1.setOnKeyListener(new View.OnKeyListener() { Integer count = 0; String typeWord = ""; public boolean onKey(View v, int keyCode, KeyEvent event) { if (KeyEvent.ACTION_DOWN == event.getAction()) { if (keyCode != 67) { count++; char c = (char)event.getUnicodeChar(); typeWord = typeWord + c; } else { count--; } if (count > 2 && typeWord != "") { countries = getAutosuggestWord(typeWord); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.autosuggest, countries); ed1.setAdapter(adapter); } } return false; } }); 

Debe calificar el uso de this cuando quiera referirse a la clase que lo rodea de una clase interna. En su código, si la clase adjunta es su subclase de actividad (digamos que se llama MyActivity), entonces escribiría:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(MyActivity.this, R.layout.autosuggest, countries); 

El constructor no está definido porque se trata de una referencia a View.OnKeyListener . YourOuterClass.this lugar, utilice YourOuterClass.this .

La palabra clave this apunta a la instancia actual de la clase View.OnKeyListener . El constructor de ArrayAdapter toma el contexto actual como primer parámetro que es su nombre de clase externo, es decir, View (diga MyActivity).

Debe utilizar MyActivity.this lugar de this .

Sé que esto es ridículamente tarde pero usualmente uso getActivity() en esta circunstancia. Así se vería así:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.autosuggest, countries); ed1.setAdapter(adapter); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.