Spinner no consigue el foco

Estoy utilizando 4 campos EditText y 2 spinners en una actividad. El orden de estos componentes son 2 EditText , luego 2 spinners y luego 2 campos EditText .

El problema ocurre cuando transfiero el foco (con la ayuda del botón siguiente del teclado suave) de EditText al hilandero, el hilador no consigue el foco y el foco se transfiere al campo siguiente de EditText que fue colocado después de los hilanderos.

He utilizado requestfocus () en spinner, pero no funcionó.

¿Cómo me aseguro de que el hilandero se enfoque?

Me las arreglé para encontrar una solución a continuación, el reposicionamiento de mi Spinner. En el EditText antes de la hiladora, agrega este listener:

 editTextBefore.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_NEXT) { hideKeyboard(); textView.clearFocus(); spinner.requestFocus(); spinner.performClick(); } return true; } }); 

También es necesario agregar estas líneas a spinner capaz de obtener el enfoque:

 spinner.setFocusable(true); // can be done in XML preferrable 

Mi función hideKeyboard era sólo un detalle visual que quería añadir para que el teclado se escondiera:

 private void hideKeyboard() { InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } 

Espero haber ayudado en esta pregunta difícil.
El indicador InputMethodManager.HIDE_NOT_ALWAYS puede encontrarse en la documentación .

Gracias, he resuelto haciendo lo siguiente:

  1. Establecer el objeto Spinner en la parte superior (dentro del método onCreate ) sólo para asegurarse de que mi código se ejecuta primero
  2. Utilicé lo siguiente:

     Spinner s1 = (Spinner) findViewById(R.id.spinner1); s1.setFocusable(true); s1.setFocusableInTouchMode(true); s1.requestFocus(); 

Se trata de un disparo en la oscuridad, pero intente establecer la propiedad focusable (en XML o en código, como quiera que lo esté haciendo) a true en la ruleta.

http://developer.android.com/reference/android/view/View.html#attr_android:focusable

EDIT: También, vea esta pregunta: No se puede administrar a requestFocus a Spinner

Acabo de tener el mismo problema. Lo solucioné utilizando las propiedades nextFocusDown / Up / Left / Right.

 <EditText android:id="@+id/tPhone" ... android:focusableInTouchMode="true" android:focusable="true" android:nextFocusDown="@+id/sCountry"/> <Spinner android:id="@+id/sCountry" .... android:focusableInTouchMode="true" android:focusable="true" android:nextFocusUp = "@+id/tPhone" android:nextFocusDown="@+id/tStreet"/> <EditText android:id="@+id/tStreet" ... android:visibility="gone" android:focusableInTouchMode="true" android:focusable="true" android:nextFocusUp = "@+id/sCountry"/> 

Pero por qué esto es necesario … me gana.

  • Establecer TextSize a un texto en spinner en android programatically
  • Cómo configurar un spinner onClickListener () en Android
  • Spinner en el cambio de valor
  • Color del texto del cambio del androide de artículos en hilandero
  • Android: Indicación de Spinner
  • Android Spinner con diferentes diseños para "drop down state" y "closed state"?
  • Cómo ver el estilo predeterminado de android simple_spinner_dropdown_item
  • Spinner.setSelection no activa OnItemSelectedListener correctamente
  • Android: la lista desplegable / selección de Spinner no se muestra
  • Cómo obtener Spinner valor del elemento seleccionado a la cadena?
  • Android: Selección de spinner alineada a la izquierda
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.