Мягкая клавиатура не отображается при запуске Activity

Я добавил android:windowSoftInputMode="stateAlwaysVisible" в свою активность в AndroidManifest.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">
    <EditText android:id="@+id/EditText01" android:layout_width="wrap_content"
        android:layout_height="wrap_content"></EditText>
    <EditText android:id="@+id/EditText02" android:layout_width="wrap_content"
        android:layout_height="wrap_content"></EditText>
    <Button android:id="@+id/Button01" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="Send"></Button>
</LinearLayout>

альтернативный текст http://img227.imageshack.us/img227/2006/18021414.png < / а>

Когда действие запускается, EditText фокусируется, но программная клавиатура не отображается. Если я нажимаю EditText, я вижу мягкую клавиатуру. Нужно ли мне устанавливать дополнительные параметры для отображения виртуальной клавиатуры при запуске моего действия?

Спасибо


person Sarp Centel    schedule 26.04.2010    source источник


Ответы (2)


решение 1:

напишите следующий код внутри метода активности onCreate ()

InputMethodManager imm = (InputMethodManager)
    SearchActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);

if (imm != null){
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}

решение 2:

создать следующий метод и вызвать из onCreate ()

private void showVirturalKeyboard(){
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
         @Override
         public void run() {
              InputMethodManager m = (InputMethodManager) SearchActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);

              if(m != null){
                // m.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
                m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT);
              } 
         }

    }, 100);         
}
person rakeshsoni    schedule 27.04.2010
comment
Не уверен, почему, но решение 2 работает для меня, если я увеличиваю задержку до 200 или более миллисекунд на моем Galaxy Nexus. У меня есть windowSoftInputMode = stateVisible моей активности, я скрываю клавиатуру, показывая неопределенный диалог, а затем пытаюсь снова показать его. - person DustinB; 20.09.2012

Попробуйте добавить это в метод activity onCreate ()

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
person Donal Rafferty    schedule 26.04.2010
comment
Вы пробовали вообще не ставить? У меня была противоположная проблема, я не хотел, чтобы мягкая клавиатура появлялась, когда экран показывался первым, но, похоже, это была настройка по умолчанию. - person Donal Rafferty; 26.04.2010