按下手柄以不关闭 activity
Handle back pressed to not dismiss activity
我想像 whatsapp 一样处理后退键,如果用户按下键,键盘会在打字时消失,如果用户再次按下键,我们会去聊天 tab.In 我的 activity 我想要那个当用户在键入键盘时按下回退键时,一些 UI 元素 handled.I 尝试在 onBackPressed() 方法中处理它,但它不起作用并且 activity 被杀死。
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");
}
如果开启 activity,onBackPressed() 函数执行以下操作,
// hide virtual keyboard
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(m_txtSearchText.getWindowToken(),
InputMethodManager.RESULT_UNCHANGED_SHOWN);
由于您没有提供任何代码,而且我还不能发表评论,我假设您让 onBackPressed 执行默认情况下的操作,这意味着在您的 onBackPressed()
方法中您有super.onBackPressed();
,删除该行应该可以解决问题
编辑
由于您已经使用代码更新了您的问题,因此在 super.onBackPressed() 之后写的任何内容都不会在视觉上看到,因为 super.onBackPressed()
返回到之前的 activity。删除 super.onBackPressed()
,并使用 if else 语句
处理第二次后退
我想像 whatsapp 一样处理后退键,如果用户按下键,键盘会在打字时消失,如果用户再次按下键,我们会去聊天 tab.In 我的 activity 我想要那个当用户在键入键盘时按下回退键时,一些 UI 元素 handled.I 尝试在 onBackPressed() 方法中处理它,但它不起作用并且 activity 被杀死。
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");
}
如果开启 activity,onBackPressed() 函数执行以下操作,
// hide virtual keyboard
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(m_txtSearchText.getWindowToken(),
InputMethodManager.RESULT_UNCHANGED_SHOWN);
由于您没有提供任何代码,而且我还不能发表评论,我假设您让 onBackPressed 执行默认情况下的操作,这意味着在您的 onBackPressed()
方法中您有super.onBackPressed();
,删除该行应该可以解决问题
编辑
由于您已经使用代码更新了您的问题,因此在 super.onBackPressed() 之后写的任何内容都不会在视觉上看到,因为 super.onBackPressed()
返回到之前的 activity。删除 super.onBackPressed()
,并使用 if else 语句