如何从一个活动移动时以编程方式打开键盘

时间:2013-01-31 07:40:13

标签: android android-softkeyboard

当我将第一个活动转移到第二个活动时,我正在尝试打开键盘。 主要活动中有两个按钮 1)如果单击“NotShowKeyboard”按钮,它将打开带键盘的second.java活动 2)如果单击s“ShowKeyboard”按钮,它将打开带键盘的第二个.java活动和带焦点的EitdText  但问题是我不知道该怎么做。我在顶部显示键盘上放了一些示例,但在“ShowKeyboard”按钮上单击键盘打开并立即消失。

Main.java:

    NotShowKeyboard.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
            }

            if (event.getAction() == MotionEvent.ACTION_UP) {
                bundle.putBoolean("show", false);
                Intent start = new Intent(Main.this, Start.class);
                start.putExtras(bundle);
                startActivity(start);
            }

            return false;
        }
    });

    ShowKeyboard.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
            }

            if (event.getAction() == MotionEvent.ACTION_UP) {
                bundle.putBoolean("show", true);
                Intent start = new Intent(Main.this, Start.class);
                start.putExtras(bundle);
                startActivity(start);
            }

            return false;
        }
    });

Second.java:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
    setContentView(R.layout.start);
    i = getIntent();
    extras = i.getExtras();
    search = (EditText) findViewById(R.id.start_edit);
    search.addTextChangedListener(myTextWatcher);
    if((extras.getBoolean("show"))==true) {
    ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
    //getting all stuff like buttons imageViews etc.. 
}

当NotShowButton单击时,应该打开:

enter image description here

当ShowButton单击时,应该打开:

enter image description here

3 个答案:

答案 0 :(得分:12)

隐藏键盘:

InputMethodManager imm = (InputMethodManager)getSystemService(
  Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

显示键盘:

InputMethodManager imm = (InputMethodManager)   getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

答案 1 :(得分:5)

你试过这个吗?

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

尝试将此代码放入onResume()

答案 2 :(得分:0)

有时它取决于设备,软键盘是否出现。在我的Vodafone Smart II手机上,我的Intexo TAB814(8英寸显示屏)没有显示它(3,5英寸显示屏)。相同的应用程序,但结果不同。它也semms依赖于你使用的Android版本。 (沃达丰智能II - > 2.1.3,Intenso平板电脑4.1)尝试使用其他设备