Вопрос

Хорошо, другая странная проблема. У меня есть деятельность main.java и dialoglikeactivity.java.

В Основной у меня есть

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

На ДиалогLikeActivity (деятельность, но стиль с темой диалога и с Android: WindowsoftInPutmode = "Statealways невидение" метка в манифесте) у меня есть

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

Что я хочу? Когда я ввожу основную клавиатуру активности открытую с типом ввода телефона, и это нормально. Когда я нажимаю на поле Edittext, заполните что-то и нажмите OK Статическое изменение, становится в состоянии 1 (всегда показывать клавиатуру) - это просто статическая переменная в основной активности.

public static int keyboardMode = 1;

Нажав на OK Открывает диалогLikeActivity с открытой клавиатурой (тип ввода телефона). Когда я нажимаю кнопку ОК Onreusume основных ударов в

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

И гарантирует, что клавиатура открыта с типом ввода телефона. Если iHewer Щелкнул / прокручиваю список в главной переменме клавиатуры, становится 2 (всегда скрывать) - поэтому скрывается клавиатура (с помощью Skidkeyboard Methods называется list.ontouch listerver). Если я нажму на какой-нибудь элемент в списке, он снова открывает диалогLikeActivity с открытой клавиатурой и типом ввода телефона. Если я нажимаю кнопку ОК OnResume в основных ударах и скрывающую клавиатуру (см. Код Upthoe).

Как это похоже на, пожалуйста, смотрите видео (кнопка ОК в видео - кнопка ArticleOk) - Видео (3,24 МБ).

Так на самом деле - если я нажаю кнопку ОК (Artehic) - Клавиатура всегда должна быть показана, если я, однако, начните прокручивать токарный список или нажмите на какой-то элемент в списке - Клавиатура должна быть показана только в диалогликаактивности., в противном случае в главном он должен оставаться скрытым (конечно, если я нажму на поле Edittext наверху, он снова открывается).

На видео вы можете увидеть HTC Desire и все работает так, как я хочу, но - на Galaxy S Всегда показывать деталь работает, но если я нажму / прокручиваю список, Это открытая клавиатура с типом буквы (!) Вместо того, чтобы скрывать его. Отказ Где проблема?

Так что кнопка ОК - всегда показывать клавиатуру (в главной и диалогLikeActivity). Если нажмите / прокрутить список показать клавиатуру только в диалогликактивности.

Это было полезно?

Решение

У меня та же проблема с Edittext, который всплывает клавиатуру с номерами. После нажатия на OK или CANCE на виртуальной клавиатуре не скрывают и показывает клавиатуру с типом буквы, на устройстве Samsung Galaxy S. Он работает нормально на эмуляторах 2.1 или 2.2 и моим HTC Hero, но не на устройстве Samsung Galaxy S с 2.2. Я также попробовал: mgr.togglesoftinput (inputmethodmanager.hide_implicit_only, 0); но до сих пор нет шансов

Редактировать: ОК, проблема решена только с этой строкой:

mgr.toggleSoftInput(0, 0);

и без этих 2 строк:

mgr.hideSoftInputFromWindow(view.getWindowToken(), 0);
articleNumber.setInputType(0);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top