2017-10-20 4 views
0

ich die Methode auf diese Weise genannt:Tastatur wird nicht angezeigt, nachdem InputMethodManager.showSoftInput Aufruf

getInputMethodManager().showSoftInput(view, 0, resultReceiver); 

Allerdings ist die Tastatur nicht auf meinem Bildschirm zeigen und resultReceiver keine Nachricht in onReceiveResult(int resultCode, Bundle resultData) erhalten. Die Ansicht ist nicht null und hasFocus() == true.

Kennt jemand dieses Problem? Vielen Dank.

Dank Karthik und Imen. Ich muss die Ursache wissen, warum diese Methode nicht funktioniert, aber keine Abhilfe.

aktualisiert am 2017.10.23:

I debuged in Code android sdk Quelle und gefunden: eine Variable mit dem Namen mServedView ist null, und das Verfahren wird ein false zurück. Das [offizielle Dokument] (https://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#showSoftInput(android.view.View, int, android.os.ResultReceiver)) sagt jedoch nicht, warum oder wann diese Methode eine false zurückgibt.

+0

Karthik, vielen Dank für Ihre Antwort aber es behebt mein Problem nicht. In meinem Fall möchte ich nicht "toggleSoftInput" anstelle von "showSoftInput" verwenden, und ich kann den "InputMethodManager.SHOW_FORCED" nicht verwenden, da es sich um eine util-Methode handelt. Flag muss in diese Methode übergeben werden. – freshomer

Antwort

1

Versuchen wie folgt aus:

Für die Anzeige Tastatur:

public void showSoftKeyboard(Context ctx, View v) { 
     InputMethodManager imm = (InputMethodManager) ctx.getSystemService(
       Context.INPUT_METHOD_SERVICE); 
     imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
    } 

für das Verstecken Tastatur:

public void hideSoftKeyboard(Context ctx, View v) { 
     InputMethodManager inputManager = (InputMethodManager) ctx.getSystemService(
       Context.INPUT_METHOD_SERVICE); 
     inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0); 
    } 
0

versuchen, diese Methode:

public void showSoftKeyboard(View aView) { 
     if (aView != null) { 
      aView.setFocusable(true); 
      aView.setFocusableInTouchMode(true); 
      aView.requestFocus(); 
      InputMethodManager keyboard = (InputMethodManager) 
        getSystemService(Context.INPUT_METHOD_SERVICE); 
      keyboard.showSoftInput(aView, 0); 
     } 
    } 
Verwandte Themen