Frage

In Ordnung, eine andere seltsame Problem. Ich habe Aktivität Main.java und DialogLikeActivity.java.

Haupt Ich habe

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

Ein DialogLikeActivity (Aktivität, aber mit einem Dialog Thema gestaltet und mit Android: windowSoftInputMode = "stateAlwaysVisible" -Tag in Manifest) Ich habe

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

Was will ich? Als ich Haupttätigkeit Tastatur eingeben offen mit Telefoneingangstyp und das ist in Ordnung. Wenn ich auf EditText Feld klicken, fill in etwas und klicken Sie auf OK statische varible in Zustand 1 wird (immer zeigen Tastatur.) - es ist nur statische Variable in Haupttätigkeit

public static int keyboardMode = 1;

Ein Klick auf OK öffnet sich DialogLikeActivity mit Tastatur geöffnet (Telefon input type). Wenn ich auf OK klicken onResume von Haupt Tritten 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);
            }
        }
    });

und stellt sicher, dass Tastatur mit Telefoneingabetyp offen ist. Wenn ich auf howewer / blättern Sie durch die Liste in Haupt keyboardMode Variable wird 2 (immer aus) - so die Tastatur versteckt (mit hideKeyboard Methode list.onTouch Hörer genannt). Wenn ich in der Liste auf einigen Artikeln klicken öffnet es wieder DialogLikeActivity mit offener Tastatur und Telefoneingabetyp. Wenn ich OK onResume in Haupt Tritten in und Häuten Tastatur klicken (siehe Code upthere).

Wie funktioniert das aussehen wie Sie Video sehen (OK-Taste in Video ist articleOK Taste) - Video ( 3,24 MB) .

Also eigentlich - wenn ich auf OK klicken (articleOK) Taste - Tastatur muss immer gezeigt , wird, wenn ich jedoch starten thorugh der Liste scrollen oder klicken Sie auf einigen Artikeln in der Liste - Tastatur nur in DialogLikeActivity Aktivität muss , sonst in Main gezeigt werden, versteckt bleiben muss (natürlich, wenn ich auf der Oberseite auf EditText Feld klicken öffnet es wieder).

Auf Video können Sie HTC Desire sehen und alles funktioniert genau so, wie ich will, aber - auf Galaxy S immer Teil zeigen ist zu arbeiten, aber wenn ich Hahn / blättert die Liste, es ist offen nach oben Tastatur mit Buchstaben Typ (!), anstatt sie zu verbergen . Wo ist das Problem?

So OK-Taste - zeigt immer Tastatur (in Haupt- und DialogLikeActivity). Wenn Hahn / scrollen Sie die Liste anzeigen Tastatur nur in DialogLikeActivity.

War es hilfreich?

Lösung

Ich habe das gleiche Problem mit einem EditText, die die Tastatur mit Zahlen erscheinen. Nach dem Klick auf OK oder Abbrechen, wird die virtuelle Tastatur nicht verstecken und zeigt Tastatur mit Buchstaben-Typ, auf dem Samsung Galaxy S Gerät. Es funktioniert gut auf Emulatoren 2.1 oder 2.2 und mein HTC Hero, aber nicht auf dem Samsung Galaxy S Gerät mit 2.2. Ich habe auch versucht: mgr.toggleSoftInput (InputMethodManager.HIDE_IMPLICIT_ONLY, 0); aber noch keine Chance

EDIT: ok, Problem mit dieser Linie gelöst nur:

mgr.toggleSoftInput(0, 0);

und ohne diese 2 Zeilen:

mgr.hideSoftInputFromWindow(view.getWindowToken(), 0);
articleNumber.setInputType(0);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top