好吧,另一个奇怪的问题。我有活动Main.java 和DialogLikeActivity.java.

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

DialogLikeActivity (活性,但采用一个对话主题和与 问题:windowSoftInputMode="stateAlwaysVisible" 标签清单)我

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

我想要什么?当我进入主要活动键盘打电话的输入型和这很好。当我点EditText领域,填写的东西,点击OK静varible成为在国家1(总是显示键盘)-它只是静态的变量中的主要活动。

public static int keyboardMode = 1;

点击"OK"开辟了DialogLikeActivity用键盘打开(电话输入型)。当我点击"OK"onResume的主要踢

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

和确保键盘打电话的输入类型。如果我howewer击/滚动名单在主要keyboardMode变成为2(总是隐藏)-这样的键盘隐藏(与hideKeyboard的方法称为清单。onTouch listener).如果我点击一些列表中的项目,它再次打开了DialogLikeActivity与开放键盘输入和电话的类型。如果我点击"OK"onResume在主要踢和隐藏的键盘(见码upthere).

怎么看起来像请看视频("确定"的按钮在视频是articleOK按钮)- 视频(3,24MB).

因此,实际上-如果我点击"OK"(articleOK)按钮 键盘始终必须显示, 如果我,然而开始滚动看的清单,或者点击某些项目的列表 键盘必须显示只有在DialogLikeActivity活动, 否则在主要它必须呆在隐藏(当然,如果我点击EditText场上的顶部就开辟了再)。

在视频可以看到宏达的愿望并且一切都只是我想要的方式,但是在银河系的 总是秀的一部分 是的工作,但如果我点击/滚动名单, 打开它是键盘的信类型(!) 而不是隐藏它.哪里有问题?

所以"确定"的按钮-总是显示键盘(在主要和DialogLikeActivity).如果挖掘/滚动名单显示键盘只在DialogLikeActivity.

有帮助吗?

解决方案

我有同样的问题EditText持久性有机污染物的键盘上的数字。点击后确定或取消,键盘虚拟不会隐藏和展示的键盘的信类型,在银河系三星设备。它的工作现在模拟器上2.1或2.2和片中的英雄,但不是在Galaxy S设备与2.2.我也试过:mgr.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY,0);但仍然没有机会

编辑:ok,问题就解决了与这一行:

mgr.toggleSoftInput(0, 0);

没有这些2行:

mgr.hideSoftInputFromWindow(view.getWindowToken(), 0);
articleNumber.setInputType(0);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top