我定义了一个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