2014-03-30 143 views
1

我的方法是这样的:如何保持软键盘打开时后退按钮按下

public boolean onKeyPreIme(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     EditText editText = (EditText) findViewById(R.id.editText1); 
     editText.requestFocus(); 
     InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 
       InputMethodManager.HIDE_IMPLICIT_ONLY); 
     return false; 
    } 
    return super.dispatchKeyEvent(event); 
} 

但是这不是为我工作,但后退键被按下如何保持软键盘仍处于打开状态?

回答

0

您可以通过重写onKeyPreIme方法来处理返回键来专门化EditText小部件。

public class MyEditText extends EditText { 

    public MyEditText(Context context, AttributeSet attr) { 
     super(context, attr); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public boolean onKeyPreIme(int keyCode, KeyEvent event) { 
     boolean retVal = false; 

     if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { 
      InputMethodManager manager = (InputMethodManager) this.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
      manager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
     } 
     return retVal; 
    } 
} 

然后在您的活动中使用这个专门的EditText小部件。我正在使用的片段布局片段。

<com.example.MyEditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/editText" 
     android:inputType="text" /> 
+0

它一样,没有为我工作,在第一次按键后,键盘仍然隐藏,当我再次按下它,键盘显示和应用程序退出。 –

相关问题