Pergunta

Tudo bem, outro problema estranho. Eu tenho atividades main.java e dialoglikeActivity.java.

Dentro Principal Eu tenho

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

Sobre DialoglikeActivity (atividade mas estilizada com um tema de diálogo e com Android: WindowsoftInputMode = "StatealwaysVisible" tag em manifesto) eu tenho

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

O que eu quero? Quando entro, o teclado principal da atividade está aberto com o tipo de entrada de telefone e tudo bem. Quando clico no campo EditText, preencha algo e clique em OK estático Varível se torna no estado 1 (sempre mostre teclado) - é apenas uma variável estática na atividade principal.

public static int keyboardMode = 1;

Clicar em OK abre dialoglikeActivity com o teclado aberto (tipo de entrada de telefone). Quando clico em OK OnResume de chutes principais

@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);
            }
        }
    });

E garante que o teclado esteja aberto com o tipo de entrada de telefone. Se eu clicar/rolar a lista na variável principal do teclado principal se tornará 2 (sempre oculte) - portanto, o teclado se esconde (com o método HideKeyboard chamado List.ontouch ouvinte). Se eu clicar em algum item da lista, ele abrirá novamente dialoglikeActivity com o teclado aberto e o tipo de entrada de telefone. Se eu clicar em OK OnResume no Kicks principal e oculta o teclado (consulte o código acima).

Como é assim, por favor, consulte o vídeo (botão ok no vídeo é o botão do artigok) - Vídeo (3,24 MB).

Então, na verdade - se eu clicar no botão OK (Artigok) - O teclado sempre deve ser mostrado, se eu, no entanto, começar a rolar a lista ou clique em algum item na lista - O teclado deve ser mostrado apenas na atividade de dialoglikeactivity, caso contrário, no Main, ele deve ficar oculto (é claro que eu clicar no campo EditText na parte superior, ele se abrir novamente).

Em vídeo, você pode ver o desejo HTC e tudo funciona do jeito que eu quero, mas - na galáxia é sempre mostre parte está funcionando, mas se eu tocar/rolar a lista, Abra o teclado up com o tipo de carta (!) Em vez de escondê -lo. Onde está o problema?

Botão então OK - sempre mostre o teclado (no principal e dialoglikeActivity). Se toque/role a lista, mostre o teclado apenas na dialoglikeActivity.

Foi útil?

Solução

Eu tenho o mesmo problema com um EditText que aparece no teclado com números. Depois de clicar em OK ou Cancelar, o teclado virtual não se esconde e mostra o teclado com o tipo de carta, no dispositivo Samsung Galaxy S. Está funcionando bem nos emuladores 2.1 ou 2.2 e no meu herói HTC, mas não no dispositivo Samsung Galaxy s com 2.2. Eu também tentei: mgr.togglesoftInput (inputMethodManager.hide_implicic_only, 0); Mas ainda não há chance

EDIT: OK, problema resolvido apenas com esta linha:

mgr.toggleSoftInput(0, 0);

E sem essas 2 linhas:

mgr.hideSoftInputFromWindow(view.getWindowToken(), 0);
articleNumber.setInputType(0);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top