【发布时间】:2011-04-11 10:57:09
【问题描述】:
我定义了一个 EditText 字段,我希望在用户编辑该字段时收到通知。 所以我想:简单 - 我添加了一个 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
}
});
知道吗,为什么从不调用回调?
迈克尔
PS.:叹息! Android 真的充满了古怪之处!似乎到目前为止,我接触的几乎所有东西都没有像人们预期的那样立即起作用。而且 - 信不信由你 - 我在 GUI 方面有很多经验,尤其是。在 Java 中(AWT、Swing、SWT,应有尽有......)但 Android 是一个非常强悍的野兽!
【问题讨论】:
-
@Falmarri,这有什么问题?从概念上讲,getText 返回一个字符序列,因此将返回值存储在该类型的变量中并没有错。而且您必须进行强制转换才能使用 getText 方法。您不能只将 onKey 方法更改为采用 TextView,因为它会覆盖 OnKeyListener 中的方法。 (可以说,上面应该有一个@Override,但在这种情况下很明显。)
-
@Falmari:你显然没有为 Android 编程。我也更喜欢字符串,但 Android 唉,到处都返回 CharSequence 而不是字符串,所以你必须经常进行强制转换或 toString()。如果一个方法头只定义了一个“视图”但你知道它是一个 TextView 并且你需要一个只有 TextView 提供的方法,那么你还能做什么呢?有更好的建议吗?
标签: android