2011-05-15 77 views
8

我有一個共同的EditText。這很奇怪,因爲使用硬鍵盤時我無法聚焦它。情境條件:硬鍵盤未能對焦editText

  1. 開關Droid的上
  2. hardkeyboard
  3. 啓動活動
  4. 點擊EDITTEXT輸入
  5. 無法輸入。當你按任意鍵時,editText失去焦點。

要獲得焦點: 按Dpad,您將看到焦點從屏幕上的第一個小部件開始。最後關注目標EditText。然後你可以輸入。沒有這個,你根本無法使用硬鍵盤輸入。

軟鍵盤沒有這樣的焦點問題。

我使用的是android 2.2。這是一個系統錯誤嗎?

+0

我遇到了與我用作密碼字段的EditText小部件相同的問題。其他EditText小部件(包括密碼和非密碼)在其他佈局中工作得很好。如果它很重要,那麼這個小部件就是使用ButtonBar設計的LinearLayout的一部分(儘管我認爲這只是增加了一些填充和背景)。 – 2011-07-10 04:02:04

+0

我猜EditText可能被其他東西包裹了,然後就壞掉了。類似的情況是在滾動條中包裝一個列表視圖。我嘗試使用單個編輯文本並且沒問題。我會根據您提供的信息檢查佈局,並在稍後回覆。 – 2011-07-11 08:52:02

+0

我仍然無法找到任何解決方案。我所能找到的是:在EditText無法獲得硬鍵盤焦點的地方,有一個TabHost作爲頂部。有關它的任何想法? – 2011-07-15 08:49:19

回答

0

我有同樣的問題。我有點同意Jay。通常,TabHost和/或TabActivity利用LocalActivityManager來跟蹤嵌入的活動或FrameLayout元素中顯示的適當的ContentStrategy組件。簡而言之,這是一個典型的嵌入式Activities /嵌入式視圖佈局問題。編輯文本位於觸摸屏空間最頂端的活動/視圖中,而核心活動實際上託管了此活動/視圖,該活動/視圖可能抓取InputMethodService焦點並使其遠離編輯文本,僅適用於硬鍵盤場景。軟鍵盤工作正常。

我對編輯文本所做的一項更改是將InputType更改爲純粹的小數。所以當編輯文本獲得焦點時,軟鍵盤顯示一個數字鍵盤而不是按字母順序的QWERTY鍵盤。我在Motorla Droid Pro模擬器上運行它,我從Motodev網站更新Eclipse插件。顯然,當我嘗試從編輯文本(並且軟鍵盤顯示數字鍵盤)獲得焦點後,嘗試從硬鍵盤輸入文本時,在單擊'ALT + 2'後,重新加載軟鍵盤作爲字母鍵盤,而編輯文本完全失去焦點。

似乎對Froyo發行版中的一個嚴重錯誤,對嵌入在其他佈局(TabHost的FrameLayout)中的佈局(LinearLayout)中編輯文本視圖的硬鍵盤設備的支持不足。

9

如上所述,這顯然是一個硬鍵盤的錯誤。如果在佈局中有EditText和TabHost,按下第一個鍵時,EditText會失去焦點,而按鍵則會發送到該活動。這是一個解決這個問題的方法。在你的活動中實現這一點。

@Override 

public boolean onKeyDown(int keyCode, KeyEvent event){ 

    final EditText myInputField = (EditText) findViewById(R.id.MyInputEditText); 
    // this will happen on first key pressed on hard-keyboard only. Once myInputField 
    // gets the focus again, it will automatically receive further key presses. 
    if (!myInputField.hasFocus()){ 
     myInputField.requestFocus(); 
     myInputField.onKeyDown(keyCode, event); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

如果你有多個的EditText字段,您將需要跟蹤的當前類變量集中的EditText和方法的onkeydown使用它。