我有一個活動,在那裏我想要打開軟件鍵盤。鍵盤打開後如何在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. 如何防止在完成按下時關閉軟鍵盤
- 2. 在SherlockActivity中按下搜索按鈕時關閉軟鍵盤
- 3. 如何在按下DONE鍵盤時不關閉鍵盤
- 4. trigger.io - 關閉軟鍵盤?
- 5. iOS - 按下按鈕時關閉鍵盤
- 6. 關閉活動的鍵盤動畫
- 7. 如何在Xamarin Forms中按下按鈕時關閉鍵盤
- 8. 活動在按下按鈕時關閉
- 9. 如何保持軟鍵盤打開時後退按鈕按下
- 10. 安卓鍵盤向後按關閉
- 11. 如何在使用Swift按下UIButton之後關閉iOS上的鍵盤
- 12. 當我們開始新的活動時,android軟鍵盤會自動打開。我必須關閉android軟鍵盤
- 13. Android:如何強制打開軟鍵盤時強制關閉軟鍵盤?
- 14. 如何在切換活動/選項卡時關閉Android鍵盤
- 15. 當按下UISearch Bar'Search'按鈕時如何關閉鍵盤?
- 16. 在使用本地活動時關閉軟鍵盤時發生崩潰
- 17. 關閉主屏幕按鍵上的軟鍵盤
- 18. 爲什麼按下活動按鈕後應用程序關閉?
- 19. 從軟鍵盤開始活動沒有隱藏軟鍵盤
- 20. 如何在按下android鍵盤後移動到特定活動(android)
- 21. 如何顯示軟鍵盤上用硬鍵盤設備時hkbd被關閉?
- 22. Android軟鍵盤:如何在鍵盤上打開/關閉操作視圖
- 23. 屏幕鍵盤關閉按鈕事件?
- 24. 傾聽完成不關閉軟鍵盤
- 25. Flex 4.6隱藏/關閉軟鍵盤
- 26. 關閉片段中的軟鍵盤
- 27. Android軟鍵盤:「完成」「關閉」
- 28. Android檢測到軟鍵盤關閉
- 29. 打開/關閉軟鍵盤(Galaxy S)
- 30. 檢查軟鍵盤是否關閉
好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