2012-02-17 78 views
0

我用EditText有一個簡單的活動。我想在用戶在EditText中輸入名稱並點擊Enter時保存表單數據。當在我的電腦鍵盤上按下Enter時獲取keyCode 0而不是66

除了一件事以外,所有的作品都能找到。 keyCode變量是0而不是66(KeyEvent.KEYCODE_ENTER)。

有沒有人有什麼問題是什麼idéa?

我的佈局XML:

<EditText 
    android:id="@+id/etName" 
    style="@style/EditTextFont" 
    android:inputType="textPersonName" /> 

我的活動:

private EditText etName; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.form); 

    etName = (EditText) findViewById(R.id.etName); 
    etName.setOnEditorActionListener(this); 
} 

@Override 
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
    switch (v.getId()) { 
    case R.id.etName: 
     // actionId will be EditorInfo.IME_NULL if being called 
     // due to the enter key being pressed. 
     if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
      (actionId == EditorInfo.IME_NULL)) { 
     save(); 
     return true; 
     } 
    } 
    return false; 
} 

問候,馬蒂亞斯

+0

你是什麼意思由keyCode變量是0而不是66?你的代碼工作與否? – 2012-02-17 11:35:35

+0

因爲keyCode爲0,所以if語句中的代碼將不會被執行。當我在EditText中輸入時,onEditorAction方法被調用,唯一的問題是keyCode不是我所期望的。 – Mattias 2012-02-17 12:14:23

+1

Yves Daoust雖然不禮貌,但他的回答實際上是正確的。我混淆了兩種不同的方法。我糾正了上面的解決方案。感謝所有幫助的人。 – Mattias 2012-02-17 14:11:45

回答

-2

Android documentation

public abstract boolean onEditorAction(TextView v, int actionId, KeyEvent event) 

正在執行的動作時被調用。

參數

v                        單擊的視圖。

actionId  該操作的標識符。這將是您提供的標識符,或者是由於按下回車鍵而被調用時的EditorInfo.IME_NULL。

事件          如果回車鍵觸發,這是事件;否則,這是空的。

返回

返回true,如果你已經消耗的行動,否則爲假。

0

與SDK的Enter鍵,而不是使用電腦的鍵盤按鍵嘗試。

+0

在Android 4.0.3上運行WXGA800(模擬平板電腦),在屏幕上不顯示鍵盤。但謝謝你的建議。無論如何,問題解決了,看到我對我原來的問題的評論。 – Mattias 2012-02-17 14:14:55

+0

雖然您的問題已解決,但您可以在Android 3.0環境sdk tablet中測試一次。在打開物理鍵盤選項後顯示仿真器鍵盤。 – AndroDev 2012-02-20 09:44:36

相關問題