2010-03-17 20 views
42

Tengo 2 actividades, A y B. Cuando A se inicia, comprueba si hay una condición y si es verdadero, llama al startActivityForResult() para iniciar B. B solo toma texto para que tenga sentido para el software teclado para que aparezca automáticamente cuando B comience. Cuando comienza la actividad, EditText ya tiene el foco y está listo para la entrada.Mostrar el teclado virtual cuando la actividad comienza

El problema es que el teclado no aparece, incluso con windowSoftInputMode="stateAlwaysVisible" conjunto en el manifiesto bajo la etiqueta de <activity> para B. También probé con el valor establecido en stateVisible. Como no aparece automáticamente, tengo que tocar EditText para que se muestre.

¿Alguien sabe cuál sería la solución?

+0

(fotografías en la oscuridad, pero) has requestFocus en el cuadro de texto? –

+0

Lo intenté, no funcionó –

Respuesta

11

Si requestFocus en una EditarTexto no está demostrando que, tal vez esto lo hará:

InputMethodManager imm = (InputMethodManager)getSystemService(
    Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(mEditText, 0); 

Look here para más información.

+2

Lo intenté, pero no funcionó –

+0

Esto funciona para mí – fredley

+1

esto debería funcionar siempre que no especifique un estado de entrada suave diferente en ningún otro lugar, como en su manifiesto o en código es decir this.getWindow(). setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); – topwik

75

Lo que funcionó mejor para mí está en Android Manifiesto para la actividad B añadiendo

android:windowSoftInputMode="stateVisible"

Esperanza que ayuda para usted también.

+1

Debo señalar que hasta ahora, esto funciona bien para el Nexus One que corre 2.2 pero algunos de los dispositivos de Motorola como Milestone con 2.1 parecen ignorar esto. – Leo

+0

Gracias, para hacer esto, compruebe programáticamente https://stackoverflow.com/questions/5593053/open-soft-keyboard-programmatically –

+0

El uso de los resultados de 'stateVisible' en el teclado reaparece cuando cambia la orientación del dispositivo. Si no se desea este comportamiento, entonces 'stateVisible' no es la solución. –

2

Si está utilizando un emulador, debe apagar el teclado duro para que aparezca el teclado virtual.

6

Intente algo similar a esto:

public void onResume() { 
    super.onResume(); 

    TimerTask tt = new TimerTask() { 

     @Override 
     public void run() { 
      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.showSoftInput(yourTextBox, InputMethodManager.SHOW_IMPLICIT); 
     } 
    }; 

    final Timer timer = new Timer(); 
    timer.schedule(tt, 200); 
} 
+2

tarea del temporizador? ¿para qué? – busylee

+0

@busylee puede usar un controlador o cualquier otro método de ejecutar algo en un retraso de su elección. Esto es solo un ejemplo. – Mannaz

+0

No hay razón para usar el retraso – busylee

10

Para mí sólo trabajaban estas soluciones: añadir en el manifiesto de esa actividad:

android:windowSoftInputMode="stateVisible|adjustPan" 
+0

¿Funcionó para dispositivos con teclado de hardware? Me está resultando difícil trabajar esto en dispositivos de teclado de hardware, es decir, dispositivos 2.2 – NinjaCoder

16

solución más fácil: Ponga

android:windowSoftInputMode = "stateVisible" 

en la sección Actividad de AndroidManifest.xml

0

del archivo: AndroidManifest.xml

<activity android:name=".MainActivity"> 

Agregar siguiente propiedad:

android:windowSoftInputMode="stateVisible" 

que funcionó para mí.

0

Tengo dos direcciones.

Método 1. Utilice el siguiente código dentro del método OnCreate

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

Se evitará apareciendo Teclado menos que haga clic.

o

Método 2 Puede alejar el foco en otra vista como la Vista de Texto utilizando "requestFocus" en el xml.

<TextView 
      android:id="@+id/year_birth_day" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:text="1991">    
      <requestFocus /> 
      </TextView> 

Método 3 (creo que debe ser evitable) Utilizando el código siguiente en el manifest-

android:windowSoftInputMode="stateVisible" 
Cuestiones relacionadas