2011-05-07 105 views
0

我正在寫使用的應用程序的Android 2.1 在某些時候,我打電話setOnKeyListener 特別是我寫的...等待鍵盤輸入

editfield=(EditText)findViewById(R.id.edittext); 
    editfield.setOnKeyListener(this); 

這是在主線程,在OnCreate回電話。 在代碼中的這一點上,我希望處理停止並等待 鍵盤輸入。如果我讓代碼運行,邏輯將很快破壞。

我想我可以把機器放在等待循環中,直到按鍵調用onClick方法。我也可以在需要用戶輸入的地方創建一個等待循環。但是我對這兩種解決方案都感到不舒服。 (一個相關的問題是 - 在代碼中的某個點,屏幕必須點亮,我必須在繼續點之前檢查它嗎?

也許我對文檔不太好,但我沒有能夠找到具體的事情,回答這些問題。

有人能向我解釋如何完成我需要的時間,更generaly,在哪裏可以找到這些問題的信息?提前

感謝。

-looking in DC

回答

2

Android密鑰系統是基於事件的,它不像C/C++等老式的問答機制那樣工作,以獲得用戶輸入。

如果你阻止/等待 - 那麼如果用戶按Home鍵(你無法捕捉到)或導航到另一個應用程序會發生什麼 - 你的應用程序將強制關閉,因爲它仍然會等待,你的 etc不會執行。

我的建議是:

  1. 把所有的點擊後應該發生到一些功能
  2. 將聽者在onCreate結束的代碼,這種方式沒有更多的代碼後,你可以執行設置收聽者
  3. 當你得到一個鍵,請調用你的函數。因此,在你的函數語句會鍵按下

但是,如果這是,比賽結束後只執行,那麼它是可以接受的有一個專門的觸摸/鍵事件,睡了50歲或線程所以要避免事件過載(但這絕不能是主UI線程!)