2011-09-02 14 views
18

Dzięki za przeczytanie.Klawiatura miękka pojawia się TYLKO na obiekcie EditText.

Mam do czynienia z dziwnym problemem: Moje zachowanie aplikacji jest takie, że po uruchomieniu Activity, I requestFocus() na EditText i pokazać miękką klawiaturę.

Jednak po naciśnięciu przycisku Wstecz, aby odrzucić klawiaturę i stuknąć w numer EditText, nigdy nie pojawi się klawiatura. Jedynym wyjściem jest ponowne rozpoczęcie Activity.

Oto co mój kod wygląda następująco:


EditText editText = (EditText) findViewById(R.id.editText); 
editText.requestFocus(); 
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
     if(imm != null) { 
      imm.toggleSoftInput(0, 0); 
      imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);  
     } 

A oto mój XML:


<EditText android:id="@+id/editText" 
     android:layout_width="wrap_content" 
     android:imeOptions="actionSearch" android:hint="Test Hint" 
     android:layout_height="wrap_content" android:layout_centerHorizontal="true" 
     android:maxLength="30"> 
</EditText> 

Każda pomoc będzie bardzo mile widziane!

Dzięki!

Odpowiedz

57

Spróbuj otworzyć i schować wewnątrz Runnable jak,

TO OPEN

    ettext.requestFocus(); 
       ettext.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         InputMethodManager keyboard = (InputMethodManager) 
         getSystemService(Context.INPUT_METHOD_SERVICE); 
         keyboard.showSoftInput(ettext, 0); 
        } 
       },200); 

ZAMKNĄĆ

    ettext.requestFocus(); 
        ettext.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         InputMethodManager keyboard = (InputMethodManager) 
         getSystemService(Context.INPUT_METHOD_SERVICE); 
         keyboard.hideSoftInputFromWindow(ettext. 
                 getWindowToken(), 0); 
        } 
       },200); 
+1

To zadziałało! Właśnie użyłem Otwartej klawiatury Kod po prostu. Po prostu wciskam klawisz Wstecz, aby ukryć klawiaturę. Dzięki! :) –

+1

Jedyne rozwiązanie działa dla mnie :) – Bora

+0

Działa na SDK 17/MIN 8/TARGET 17! –

6

Użyto niewłaściwego widoku do wyświetlenia okna wprowadzania.

EditText editText = (EditText) findViewById(R.id.editText); 
editText.requestFocus(); 
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
if(imm != null) { 
    imm.showSoftInput(editText, 0); 
} 
+0

dzięki za wskazanie, po prostu go skorygować. To było literówka podczas tworzenia ramki pytania. Ale oryginalny kod ma prawidłowy widok. –

4

spróbować tego:

final InputMethodManager imm = (InputMethodManager)EnterWordsActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE); 
    if (imm != null) 
    { 
     imm.toggleSoftInput(YOUE_EDTITE_TEXT.SHOW_FORCED,1); 
    } 
+0

Masz na myśli imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, 1); dobrze? Jeśli tak, to nie zadziałało :(Dziękuję za poświęcony czas –

+0

@SagarHatekar Być może dodałeś coś do swojego manifestu Już wypróbowałem to wiele razy To działało poprawnie –

0

Używany tego kodowania w swojej działalności, będzie ukryć klawiatura this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Powiązane problemy