Domanda

Bene, un altro problema strano. Ho l'attività Main.java e DialogLikeActivity.java.

Nel principale ho

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

Il DialogLikeActivity (attività, ma in stile con un tema di dialogo e con Android: windowSoftInputMode = "stateAlwaysVisible" tag nel manifesto) Ho

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

Quello che voglio? Quando entro principale tastiera attività è aperta con il tipo di input del telefono e va bene. Quando clicco sul campo EditText, riempimento in qualcosa e fare clic su OK varible statica diventa nello stato 1 (visualizza sempre tastiera) -. È solo variabile statica in Attività principale

public static int keyboardMode = 1;

Cliccando su OK si apre DialogLikeActivity con tastiera aperta (tipo di ingresso di telefono). Quando scatto OK onResume dei principali calci in

@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 assicura che la tastiera è aperta con tipo di ingresso telefono. Se io clicco Howewer / Scorrere l'elenco di variabili principali keyboardMode diventa 2 (sempre nascondere) - così le pelli tastiera (con metodo hideKeyboard chiamati list.onTouch ascoltatore). Se clicco su qualche elemento della lista si apre di nuovo DialogLikeActivity con tastiera aperta e il tipo di input del telefono. Se clicco su OK onResume nelle principali calci e tastiera pelli (vedi codice upthere).

Come funziona che sembrano vedere il video (pulsante OK in video è il tasto articleOK) - Video href="http://www.svebee.com/android_razvoj/putnik_video.wmv" ( 3,24 MB) .

Quindi, in realtà - se clicco il tasto OK (articleOK) - Tastiera sempre deve essere indicato , se io, però comincio a scorrimento thorugh la lista o cliccare su qualche elemento della lista - Tastiera deve essere indicato solo in attività DialogLikeActivity , tuttavia in principale deve rimanere nascosta (naturalmente se clicco sul campo EditText sulla parte superiore si apre di nuovo).

Il video si può vedere HTC Desire e tutto funziona solo il modo che voglio, ma - su Galaxy S visualizza sempre parte è lavoro, ma se mi toccare / scorrere la lista, E 'aperto fino tastiera con tipo di lettera (!), invece di nasconderlo . Dov'è il problema?

tasto OK Quindi - mostra sempre la tastiera (in Main e DialogLikeActivity). Se toccare / scorrere la tastiera elenco Mostra solo in DialogLikeActivity.

È stato utile?

Soluzione

Ho lo stesso problema con un EditText che si apre la tastiera con i numeri. Dopo aver cliccato su OK o Annulla, la tastiera virtuale non si nasconde e spettacoli tastiera con tipo di lettera, sul dispositivo Samsung Galaxy S. Va bene lavorare su emulatori 2.1 o 2.2 e il mio HTC Hero, ma non su Samsung Galaxy S con dispositivo 2.2. Ho anche provato: mgr.toggleSoftInput (InputMethodManager.HIDE_IMPLICIT_ONLY, 0); ma ancora nessuna possibilità

EDIT: ok, problema risolto solo con questa linea:

mgr.toggleSoftInput(0, 0);

e senza queste 2 linee:

mgr.hideSoftInputFromWindow(view.getWindowToken(), 0);
articleNumber.setInputType(0);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top