使用软键盘的Android奇怪的显示行为

时间:2011-12-09 05:43:59

标签: android

我单击按钮并使用软键盘启动活动:

enter image description here

当我点击取消按钮时,它会调用finish()退出到第一页。然后,当我再次启动活动时,我得到了这个:

enter image description here

带按钮的布局现在隐藏在键盘后面。

在另一种情况下,如果我这样做:

  1. 启动活动。
  2. 点击后退按钮以关闭键盘。
  3. 点击后退按钮转到第一页。
  4. 启动活动。
  5. 我得到图片1.按钮不会被隐藏。好像我必须在调用finish()之前销毁键盘。

    如何解决这个问题?

    编辑:添加了Manifest中的内容示例

     <activity            
            android:name=".SignUp"
            android:theme="@style/DefaultTitle" />
    

    这也在我的清单中,我在阅读了其他一些帖子之后添加了它,对我来说不起作用。

    <uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="7" />
    

    好的大声笑。奇怪的发现。如果我这样做:

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(cancel.getApplicationWindowToken(), 0);
                try {
                    Thread.sleep(100);
                } catch (Exception e) {                 
                }
                finish();
    

    它有效!不确定这是否是一个好的解决方法......

3 个答案:

答案 0 :(得分:0)

将此行放入您的活动代码中,让我知道发生了什么,

<activity android:windowSoftInputMode="stateVisible" . . . >

有关详细信息,请查看android:windowSoftInputMode

答案 1 :(得分:0)

我认为你正在使用STATE_ALWAYS_VISIBLE显示SoftKeyBoard这就是为什么当你回到活动时它仍然可见。

所以尝试在按钮上打开键盘点击这样..

EditText editText = (EditText) findViewById(R.id.myEdit);
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

如果Manifest中有任何windowSoftInputMode,请删除它们因为上述方法不需要它们。

答案 2 :(得分:0)

尝试在edittext的对象上使用setfocus方法