Pregunta

Muy bien, otro problema extraño. Tengo la actividad Main.java y DialogLikeActivity.java.

principal He

EditText (articleNumber) - phone input type (in .XML)
Button (articleOK)
list (list)

En DialogLikeActivity (actividad pero combinada con un tema de diálogo y con androide: windowSoftInputMode = "stateAlwaysVisible" tag en el manifiesto) Tengo

EditText (articlePackaging) - phone input type (in .XML)
Button (finish)

Lo que yo quiero? Cuando entro en el teclado principal actividad es abierta con el tipo de entrada del teléfono y que está bien. Cuando hago clic en el campo EditarTexto, relleno de algo y haga clic en OK varible estática se convierte en el estado 1 (Siempre mostrar el teclado) -. Es sólo variable estática en la actividad principal

public static int keyboardMode = 1;

Al hacer clic en Aceptar se abre DialogLikeActivity con el teclado (tipo de entrada del teléfono) abierta. Cuando hago clic en OK onResume de patadas principales en

@Override
public void onResume() {
    super.onResume();

    if (keyboardMode == 1) {
        showKeyboard(articleNumber);
    } else {
        hideKeyboard(articleNumber);
    }
}   

public static void showKeyboard(View view) {
    InputMethodManager mgr = (InputMethodManager) myContext.getSystemService(Context.INPUT_METHOD_SERVICE);
    mgr.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);

    ((InputMethodManager) myContext.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(view, 0);

    articleNumber.setInputType(InputType.TYPE_CLASS_PHONE);
}

public static void hideKeyboard(View view) {
    InputMethodManager mgr = (InputMethodManager) myContext.getSystemService(Context.INPUT_METHOD_SERVICE);
    mgr.hideSoftInputFromWindow(view.getWindowToken(), 0);

    articleNumber.setInputType(0);
}

// Listener to showKeyboard if user clicks on EditText field and set InputType to PHONE, insted it would remain (0)

    articleNumber.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            showKeyboard(articleNumber);
        }
    });

// Listener so when user touches the list - it hides the keyboard and sets variable on 2 so keyboard is always HIDDEN

    list.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            hideKeyboard(articleNumber);
            keyboardMode = 2;

            return false;
        }
    });

// Listener so when user clicks on ArticleOK - keyboard is always OPEN

articleOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {               
                keyboardMode = 1;

                    Intent i = new Intent(NewOrderArticles.this, NewQuantityDialog.class);
                    i.putExtra("articleid", articleId);
                    startActivity(i);
            }
        }
    });

y asegura que el teclado está abierto con el tipo de entrada del teléfono. Si frecuencia se elevó click / desplazamiento por la lista en la variable principal se convierte en KeyboardMode 2 (siempre ocultar) - por lo que las pieles de teclado (con el método hideKeyboard llamados list.onTouch oyente). Si hago clic en algún elemento de la lista que se abre de nuevo DialogLikeActivity con teclado abierto y el tipo de entrada del teléfono. Si hago clic en OK en onResume principales patadas en el teclado y cueros (véase el código UpHay).

¿Cómo se ve eso por favor ver el video (botón Aceptar en el botón de vídeo es articleOK) - vídeo ( 3,24 MB) .

Así que en realidad - si hago clic en el botón OK (articleOK) - Teclado Debe mencionarse , si yo, sin embargo iniciar el desplazamiento thorugh la lista o haga clic en algún elemento de la lista - Teclado debe ser mostrado sólo en la actividad DialogLikeActivity , si no en principal que debe permanecer oculto (por supuesto si hago clic en el campo EditarTexto en la parte superior se abre de nuevo).

En el vídeo se puede ver el deseo de HTC y todo funciona de la manera que quiero, pero - sobre el Galaxy S siempre muestran parte está trabajando, pero si yo toque / desplazarse por la lista, Está abierto hasta el teclado con el tipo de letra (!) en lugar de ocultarlo . ¿Dónde está el problema?

Así botón OK - siempre muestran teclado (Principal y en DialogLikeActivity). Si grifo / desplazarse por la lista del teclado muestran sólo en DialogLikeActivity.

¿Fue útil?

Solución

Tengo el mismo problema con un EditarTexto que aparece el teclado con números. Después de hacer clic en Aceptar o Cancelar, el teclado virtual no se esconde y el teclado muestra con el tipo de letra, en el dispositivo de Samsung Galaxy S. Está bien trabajar en emuladores 2.1 o 2.2 y mi HTC Hero, pero no en el Samsung Galaxy S dispositivo con 2.2. También probé: mgr.toggleSoftInput (InputMethodManager.HIDE_IMPLICIT_ONLY, 0); pero todavía hay oportunidad

EDIT: OK, problema resuelto con esta línea única:

mgr.toggleSoftInput(0, 0);

y sin estas 2 líneas:

mgr.hideSoftInputFromWindow(view.getWindowToken(), 0);
articleNumber.setInputType(0);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top