showSoftInput() no muestra el teclado para mí, pero toggleSoftInput() hace. Vi otro post que dice deshabilitar el duro teclado cuando se utiliza el emulador, pero no estoy usando un emulador. Estoy cargando mi APK en un dispositivo real con ningún disco duro teclado. No tanto en los métodos de trabajo? ¿Por qué no showSoftInput() trabajo? Me gustaría asociar explícitamente el teclado con un determinado campo de texto.

No funciona:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
editText.setText("textchange"); //i see the text field update
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);

Obras:

InputMethodManager imm = (InputMethodManager) getDelegate().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
  • Tiene usted di cuenta de esto? He pasado 3 días en este problema ya. Si intento activar el teclado a veces se oculta, puesto que ya está visible. Y, por supuesto, Android no creo que sea necesario que nos dé la capacidad de consulta de si el softinput es visible o no.
InformationsquelleAutor prostock | 2012-12-04

7 Comentarios

  1. 23

    Parece que el teclado se muestra inicialmente pero oculto por algo más, debido a las siguientes obras (pero en realidad es un trabajo sucio-alrededor):

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    editText.postDelayed(new Runnable()
    {
        @Override
        public void run()
        {
            editText.requestFocus();
            imm.showSoftInput(editText, 0);
        }
    }, 100);

    Y cuando se mira en logcat sospecho que la causa detrás de este mensaje se esconde el teclado muestra inicialmente:

    Ocultar el Portapapeles del cuadro de diálogo en el arranque de entrada: terminado por alguien más… !

    • Que en realidad lo único que trabajó para mí cuando tratando de mostrar el teclado mediante programación en onCreate. Me gustaría saber por qué. gracias de todos modos..
    • He tenido un problema similar.Se trataba de resolver.gracias
    • Yepp. Esta es la única cosa que funcionaba correctamente para mí.
  2. 5

    Mostrar Teclado + foco y también si desea Ocultar el teclado

    @Override
    public void onResume () {
        super.onResume();
    
        inputSearch.setFocusableInTouchMode(true);
        inputSearch.requestFocus();
    
        //Show Keyboard
        InputMethodManager imm = (InputMethodManager) getSherlockActivity().getSystemService(
                Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(inputSearch, InputMethodManager.SHOW_IMPLICIT);
    }

    P. S inputSearch = (EditText) getSherlockActivity().findViewById(R. id.inputSearch);

        //Hide Keyboard
    InputMethodManager imm = (InputMethodManager) getSherlockActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(inputSearch.getWindowToken(), 0);
  3. 2

    La respuesta precisa a esta pregunta ¿por qué showSoftInput no funciona y toggleSoftInput ¿?

    Es que la Visión a la que usted está tratando de mostrar el Teclado no tiene el foco. Así que para resolver este problema y utilizar el método de showSoftInput usted tendrá que llamar a los siguientes métodos en su punto de vista:

      setFocusable(true);
      setFocusableInTouchMode(true); 

    Llamar a los métodos anteriores se asegurará de que cuando usted haga clic en la Vista conserva y captura el foco.

    • La respuesta precisa al menos debe mostrar un ejemplo… porque no funcione!
  4. 2

    ShowSoftInput funciona si el imm de destino de la vista es el mismo con el editText.
    Usted puede comprobar esto por imm.isActive(editText) o editText.isInputMethodTarget().

    ToggleSoftInput es sólo cambiar el teclado de la meta actual de la imm.

    Vista de destino de la imm se establece después de que el foco de atención ha sido cambiado por editText.requestFocus(). Creo que algunos post de los procesos de existir entre estas dos tareas desde un puesto de ejecutables no fue suficiente. He probado doble post, y trabajó para mí.

    editText.requestFocus();
    editText.post(new Runnable() {
        @Override
        public void run() {
            editText.post(new Runnable() {
                @Override
                public void run() {
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    if (imm != null) {
                        imm.showSoftInput(editText, 0);
                    }
                }
            });
        }
    });
    • «ShowSoftInput funciona si el imm de destino de la vista es el mismo con el editText. Usted puede comprobar esto por la imm.isActive(editText) o editText.isInputMethodTarget(). ToggleSoftInput es sólo cambiar el teclado de la meta actual de la imm.» Gracias por este
    • Gracias ! Realmente no comprendía por qué, pero su solución funciona a la perfección !
  5. 1

    Intente esto:

    public void showTheKeyboard(Context context, EditText editText){
        InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
    }

    Si esto no funciona, lea el tutorial de aquí

    • tuve que Alternar. Por alguna razón showSoftInput no funciona para mí
  6. 1
    public void hideKeyboard() {
        myTextView.setFocusable(true);
        myTextView.setFocusableInTouchMode(true);
        imm.hideSoftInputFromWindow(myTextView.getWindowToken(), 0);
    }

    OBRAS

    public void hideKeyboard() {
        imm.hideSoftInputFromWindow(myTextView.getWindowToken(), 0);
    }

    NO FUNCIONA

    imm es tratado antes, ya que estoy usando un Fragmento de así:

    Declarar la imm en el Fragmento

    private InputMethodManager imm;

    A continuación, en el fragmento agregar:

    @Override
        public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        imm = (InputMethodManager)
        getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    }

    Dice que después de 3 a 4 horas de investigación y fracasos !!

    Gracias user_CC ! 🙂

    Phil

    • FWIW, Tuve que leer dos veces antes de que yo estaba seguro de que era el primer fragmento de código que funciona – habría sido más claro si poner «OBRAS:» SOBRE el primer fragmento, y «NO funciona:» por ENCIMA del segundo fragmento.

Dejar respuesta

Please enter your comment!
Please enter your name here