2013-03-20 106 views
5

在我的應用程序中有一個EditText。我已經在我的活動EditText上調用了鍵盤顯示。鍵盤顯示&工作正常。onBackPressed方法無法正常工作

現在在當前,我不得不按回退按鈕兩次,一個用於隱藏鍵盤&另一個執行一些任務(如數據保存到數據庫)。 我不想按兩次按鈕。

請指導我,或建議

這裏有些來自onBackPressed()

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 

    hideKeypad(); 

    //saving EditText data to db. 
} 

代碼形式hideKeypad()

private void hideKeypad() { 
     InputMethodManager imm = (InputMethodManager) 
     getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(edittext1.getWindowToken(), 0); 
} 
+0

在用戶輸入他們正在輸入的任何內容後,您是否試圖隱藏小鍵盤? – adneal 2013-03-20 09:50:12

+0

不,但我怎麼判斷用戶完成他的輸入@aneal – PSK 2013-03-20 09:51:23

+0

可能相關:http://stackoverflow.com/questions/3558385/android-onbackpressed-not-working – adrianp 2013-03-20 09:53:26

回答

1

使用此方法就類似於你已經這樣做,但我很少修改它。註冊主佈局的偵聽器,並將其對象作爲參數傳遞,以便當您單擊編輯文本的一側時,例如,主佈局鍵盤將消失。

/** Close Keypad on touch. 
* @param view on which click happens. */ 

public void closeKeyPad(View view) 
    { 
     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(view.getWindowToken(), 0);  
    } 
+0

我試過..這通過'EditText'方法,仍然不工作@Akhilesh Mani – PSK 2013-03-20 10:04:39

+0

'EditText'是我的應用程序中的全屏幕.. @Akhilesh Mani – PSK 2013-03-20 10:06:13

+0

@PSK好的我認爲先生我是對的,你可以在這種情況下使用EditorAction。 – 2013-03-20 10:19:29

0

的問題是,鍵盤消耗第一BackPressed事件。你無法做任何事情。 解決這個只是聽取鍵盤隱藏事件並完成您的活動。

代碼做到這一點:

edit.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.getAction() == KeyEvent.ACTION_DOWN && 
     event.getKeyCode() == KeyEvent.KEYCODE_ENTER) { 
    if (!event.isShiftPressed()) { 
     // the user is done typing. finish the activity 
     finish(); 
     return true; // consume. 
    }     
} 
return false; // pass on to other listeners. 
} 
}); 
+0

我已經嘗試過使用此代碼,但仍未開始工作@ Mr.Me – PSK 2013-03-20 10:28:27

+0

請列出您的所有活動代碼,然後 – 2013-03-20 10:33:22

0

按back關閉鍵盤是用戶界面的標準功能。你爲什麼要改變這個?

習慣於在Android設備上使用軟鍵盤的用戶將被用於按下一次關閉鍵盤,然後再一次在應用程序中移回。

如果您在顯示鍵盤時使後退按鈕在應用程序中回退,它會使導航與標準Android導航不同,並且許多用戶可能會對此感到沮喪。

除此之外,您onBackPressed因爲顯示鍵盤時,該onBackPressed鍵盤運行不會被調用 - 這,因爲我們都看到 - 就是隱藏鍵盤 - 而不是onBackPressed爲您的應用程序。

Mr.Me的答案是如果你想要這樣做的話,但我不會推薦它。