我有一个活动,在那里我想要打开软件键盘。键盘打开后如何在BACK按下后关闭活动?现在我必须单击BACK两次,先关闭键盘然后完成活动。如何在BACK按下后用软件键盘关闭活动?
13
A
回答
0
您可以使用以下
@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
finish();
return true;
}
return super.onKeyUp(keyCode, event);
}
+0
不幸的是,这是行不通的。当键盘打开时,不会调用onKeyUp()。 – fhucho 2011-02-07 13:15:03
0
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
但告诉ü有一件事你必须把另一精力用于检测键盘是开放的,除可以用于决定是否使用标志返回或完成活动
3
使用onKeyPreIme(int keyCode,KeyEvent event)方法和检查KeyEvent.K EYCODE_BACK事件。这是非常简单的,没有做任何奇特的编码。
0
设置为EditText上一个OnEditorActionListener为您提供软键盘像下面的活动,
editText.setOnEditorActionListener(new OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (event != null
&& (event.getKeyCode() == KeyEvent.KEYCODE_BACK)) {
finish();
}
return false;
}
});
6
如前所述,onKeyPreIme可以用来捕捉返回按钮,但是这需要重写在文本视图上,而不是在活动中。
下面是一个完整的解决方案:
首先,从EditText上派生新类,覆盖onKeyPreIme并调用回调接口:
// EditTextWithBackButton class
public class EditTextWithBackButton extends EditText
{
public interface IOnBackButtonListener
{
boolean OnEditTextBackButton();
}
public EditTextWithBackButton(Context context)
{
super(context);
}
public EditTextWithBackButton(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public void setOnBackButtonListener(IOnBackButtonListener l)
{
_listener = l;
}
IOnBackButtonListener _listener;
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event)
{
if (event.getAction()==KeyEvent.ACTION_UP && keyCode==KeyEvent.KEYCODE_BACK)
{
if (_listener!=null && _listener.OnEditTextBackButton())
return false;
}
return super.onKeyPreIme(keyCode, event); //To change body of overridden methods use File | Settings | File Templates.
}
}
下一步,更新您的布局:
<com.yournamespace.whatever.EditTextWithBackButton
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textField"
/>
接下来,在setContentView之后,在OnCreate中更新您的活动:
((EditTextWithBackButton) findViewById(R.id.textField)).setOnBackButtonListener(new EditTextWithBackButton.IOnBackButtonListener()
{
@Override
public boolean OnEditTextBackButton()
{
finish();
return true;
}
});
1
我不相信你会需要监听器,setOnBackButtonListener,因为它已被首次建议。
我得到它的工作使用的getContext():
public class EditedText extends EditText {
@Override
public boolean onKeyPreIme (int keyCode, KeyEvent event){
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){
Activity activity = (Activity) getContext();
activity.finish();
return true;
}
return super.onKeyPreIme(keyCode, event);
}
}
注意,因为该事件是“处理”,我返回true,而不是false作为第一次在以前的答案建议。
相关问题
- 1. trigger.io - 关闭软键盘?
- 2. 关闭活动的键盘动画
- 3. 活动在按下按钮时关闭
- 4. 安卓键盘向后按关闭
- 5. Android:如何强制打开软键盘时强制关闭软键盘?
- 6. 在使用本地活动时关闭软键盘时发生崩溃
- 7. 从软键盘拦截BACK按钮当在listView适配器中
- 8. 关闭主屏幕按键上的软键盘
- 9. 如何在按下android键盘后移动到特定活动(android)
- 10. 如何显示软键盘上用硬键盘设备时hkbd被关闭?
- 11. Android软键盘:如何在键盘上打开/关闭操作视图
- 12. PhoneGap + Android页面在软键盘关闭后不会刷新
- 13. 关闭片段中的软键盘
- 14. 倾听完成不关闭软键盘
- 15. Flex 4.6隐藏/关闭软键盘
- 16. 检查软键盘是否关闭
- 17. 打开/关闭软键盘(Galaxy S)
- 18. 如何关闭键盘?
- 19. 如何在键盘打开/关闭事件后改变视图
- 20. 如何检测软键盘在移动设备(android)上通过JavaScript后退按钮关闭?
- 21. 将按钮按下两次后关闭活动
- 22. 如何使用键盘快捷键在Intellij中关闭文件?
- 23. Android软键盘按键振动
- 24. 无法按下Back按钮摧毁Android活动按下
- 25. 如何在不使用键盘的情况下按下键盘上的按键?
- 26. 问题在活动完成()和在按下back按钮在android
- 27. 后退按钮关闭两个活动?
- 28. “后退按钮”不关闭活动
- 29. 软键盘按钮
- 30. android 4.4离子硬件按钮后退关闭键盘
好questin我也对你的答案感兴趣..... upvoted和加星..... – 2011-02-08 07:49:53
这看起来像这个问题的重复:[http://stackoverflow.com/questions/3940127/intercept-从软键盘返回按钮](http://stackoverflow.com/questions/3940127/intercept-back-button-from-soft-keyboard) – 2011-02-08 00:27:29