我定義了一個EditText字段,我希望在用戶編輯該字段時得到通知。 所以我想:簡單 - 我添加一個OnKeyListener,所以我做了。但即使編輯了文本字段(甚至顯示輸入的/修改的文本),我也沒有得到任何回調,即LOG輸出不顯示。Android:爲什麼我的OnKeyListener()沒有被調用?
TextView text = new TextView(this);
text.setText(...);
...
text.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event) {
TextView tv = (TextView)v;
CharSequence val = tv.getText();
Log.v(TAG, "value: " + val);
// ... rest omitted for brevity
}
});
任何想法,爲什麼回調從未被稱爲?
Michael
PS .:感嘆! Android真的很古怪!看起來我迄今爲止所觸及的幾乎沒有任何東西可以按照人們的期望工作。並且 - 信不信由你 - 我對圖形用戶界面有着豐富的經驗,在Java中(AWT,Swing,SWT,你把它命名爲......)但Android是一個非常強悍的野獸!
@Falmarri魅力,有什麼不好呢?從概念上講,getText返回一個字符序列,因此將返回值存儲在該類型的變量中沒有任何問題。你必須這樣做才能使用getText方法。你不能只改變onKey方法來接受一個TextView,因爲它覆蓋了OnKeyListener中的一個方法。 (可以說,應該有一個@Override,但是在這種情況下它很明顯。) – MatrixFrog 2010-09-13 08:58:56
@Falmari:你顯然沒有爲Android編程。我也會使用字符串,但是Android alas會將CharSequence的所有位置而不是字符串返回,所以您必須頻繁地執行強制轉換或toString()。如果一個方法頭只定義了一個「View」,但你知道它是一個TextView,並且你需要一個只有TextView提供的方法,那你還能做什麼?有更好的建議? – mmo 2010-09-13 15:30:12