2012-03-18 12 views
8

me gustaría abrir el teclado en pantalla en cuando se inicia la actividad y me encontré con queandroide: windowSoftInputMode = "stateVisible" no funciona

android:windowSoftInputMode="stateVisible" 

no funciona.

Para asegurarse, he creado un nuevo proyecto (el valor por defecto "Hola mundo") e hizo lo siguiente:

  1. añade el windowSoftInputMode al manifiesto.
  2. Después de eso no funcionó, he añadido un campo EditView a la disposición
  3. Después de eso no funcionó, añadí

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) al procedimiento onCreate.

Lo compilé con Android2.3.3 y traté de ejecutarlo en mi dispositivo Galaxy S2 y en el emulador de Android4 y aún sin teclado.

Mi archivo de manifiesto:

<?xml version="1.0" encoding="utf-8"?> 

<uses-sdk android:minSdkVersion="9" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name"> 
    <activity 
     android:name=".HelloworldActivity" 
     android:label="@string/app_name" 
     android:windowSoftInputMode="stateVisible"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

Mi diseño main.xml:

<?xml version="1.0" encoding="utf-8"?> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <requestFocus /> 

</EditText> 

Mi código:

public class HelloworldActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 

    } 
} 
+0

Creo que 'android: windowSoftInputMode' es 'activity' elemento/atributo de etiqueta. – Deucalion

+0

Tienes razón, lo cambié. Todavía no hay teclado. –

+0

¿qué hiciste? ¿está resuelto finalmente? – Kenji

Respuesta

2

¿Utiliza el teclado predeterminado de Android? Si lo hace, pruébelo en un dispositivo diferente, sé que tiene algunos problemas

+0

Tienes razón. Después de instalar un teclado externo en mi dispositivo, de alguna manera mi KB predeterminada desapareció de la configuración del dispositivo. aparentemente es un problema conocido y también afectó esto. Usé un dispositivo diferente y está funcionando. Todavía no sé por qué el emulador no muestra la KB. –

1

Como ya he encontrado here, puede mostrar el teclado cuando se inicia la actividad de la siguiente manera:

EditText editText = (EditText) findViewById(R.id.editText1); 
    InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); 

he cambiado su código de ejemplo tener su ID de EditText, por lo que debería funcionar

0

Usted puede f orce centrarse primero en la vista EditText ejecutando:

final EditText edit = (EditText) findViewById(R.id.editText1); 
edit.post(new Runnable() { 
    @Override 
    public void run() { 
     edit.requestFocus(); 
    } 
}); 

Esto debería abrir el teclado de inicio de actividad.

+0

No es necesario crear el hilo innecesario. Solo mira mi respuesta para la solución. –

+0

publicación no crea un nuevo hilo, agrega un ejecutable a la cola de la vista, es perfectamente eficiente. Todavía me iría con mi solución, me parece más elegante. – marmor

+0

Sí, claro. También funciona bien. Disfruta Codificación. –

3

Es simple. Lo he hecho y funciona como su requisito.

  1. No haga nada con el manifiesto, dejarlo como está, mientras que la creación de la nueva nuevo proyecto.

  2. Ahora defina inputmanager.

    public static InputMethodManager imm; 
    imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE); 
    
  3. Ahora, aquí es mi sueldo EditarTexto EditarTexto y estoy mostrando el teclado en el inicio de esa actividad.

    salaryEditText.setHint("select Salary/Wage"); 
    
    salaryEditText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(2)}); // Ignore this line 
    
    if(!(imm==null)) 
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,1); 
    

que le ayudará a mostrar el teclado mientras inicio de actividad.

Cerrarán teclado en el acabado de la actividad véase más adelante código:

blanco este código mientras se termina la actividad.

imm.hideSoftInputFromWindow(salaryEditText.getWindowToken(), 0); 

Espero que solucione su problema. Si no, házmelo saber.

Disfrútalo. :)

+0

Tengo el mismo problema y esto no funciona. – Kenji

+0

@kenji Sugiero que siga la respuesta aceptada si esta respuesta no funciona para usted. Gracias. –

Cuestiones relacionadas