我想像whatsapp一样处理按键,如果用户按下键盘,键盘就会被取消,如果用户再次按下,我们会进入聊天标签。在我的活动中,当用户按下键同时输入键盘解散和一些UI元素被处理。我尝试在onBackPressed()方法中处理它,但它不起作用,活动被杀死。
edittext.setOnEditorActionListener (
new EditText.OnEditorActionListener () {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH ||
actionId == EditorInfo.IME_ACTION_DONE ||
event != null &&
event.getAction () == KeyEvent.ACTION_DOWN &&
event.getKeyCode () == KeyEvent.KEYCODE_ENTER) {
if (event == null || !event.isShiftPressed ()) {
// the user is done typing.
View view1 = getCurrentFocus ();
imm.hideSoftInputFromWindow (view1.getWindowToken (), 0);
Log.e (TAG, "TYPING DONE ");
result = tv_result.getText ().toString();
return true; // consume.
}
}
return false; // pass on to other listeners.
}
}
);
onBackPressed()代码
@Override
public void onBackPressed() {
tv_result.setText("Some text");
}
答案 0 :(得分:2)
由于你还没有提供任何代码,我还无法发表评论,我会假设你让onBackPressed执行默认操作,这意味着你的onBackPressed()
方法中super.onBackPressed();
1}},删除该行应解决问题
修改强>
由于您已使用代码更新了您的问题,因此无法在视觉上看到super.onBackPressed()之后写的任何内容,因为super.onBackPressed()
会返回到上一个活动。删除super.onBackPressed()
,然后使用和if else语句处理第二次背压
答案 1 :(得分:0)
如果它处于活动状态,则onBackPressed()函数执行以下操作,
// hide virtual keyboard
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(m_txtSearchText.getWindowToken(),
InputMethodManager.RESULT_UNCHANGED_SHOWN);