He creado una aplicación trivial para probar la siguiente funcionalidad. Cuando se inicia mi actividad, debe iniciarse con el teclado abierto.Android show softkeyboard with showSoftInput no funciona?
Mi código no funciona ?!
He intentado varias configuraciones de "estado" en el manifiesto y diferentes banderas en el código para el InputMethodManager (imm).
He incluido la configuración en el AndroidManifest.xml e invocado explícitamente en el onCreate de la única actividad.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mycompany.android.studyIme"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".StudyImeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysVisible">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
... el diseño principal (main.xml) ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<EditText
android:id="@+id/edit_sample_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/hello"
android:inputType="textShortMessage"
/>
</LinearLayout>
... y el código ...
public class StudyImeActivity extends Activity {
private EditText mEditTextStudy;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mEditTextStudy = (EditText) findViewById(R.id.edit_study);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mEditTextStudy, InputMethodManager.SHOW_FORCED);
}
}
Hmm ... Acabo de probar esto, con solo la actividad predeterminada "HelloWorld" (es decir, sin incluir el código SHOW_FORCED), en mi teléfono Sprint LG Optimus y funcionó como se esperaba. ¿Es posible que la función sea dependiente del dispositivo (sistema operativo instalado)? Volveré a probar en mis otros dispositivos (HTC, G2 y MyTouch) cuando llegue a casa. – mobibob
Consulte mi respuesta aquí, probé todas las técnicas mencionadas a continuación, pero esto funcionó: http://stackoverflow.com/a/37529370/3900270 – strangetimes