我有一个EditText。我使用setOnEditorActionListener
来收听用户输入的每个字母。但这似乎并没有奏效。我在函数中放置了一个println语句来查看它已到达,但它从未调用过。这是EditText。缺少什么?
<EditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="5dp"
android:drawableRight="@drawable/my_img"
android:hint="@string/email_hint"
android:imeActionId="@+id/login"
android:inputType="textNoSuggestions|textVisiblePassword"
android:maxLines="1"
android:singleLine="true"
android:textColor="#000000" />
答案 0 :(得分:6)
如果您想收听用户输入的每个字母,您可以在EditText
上注册TextWatcher
:
editText.addTextChangedListener(new TextWatcher() {...} );
答案 1 :(得分:1)
在使用EditText对象的活动中尝试此操作。
EditText emailText = (EditText) findViewById(R.id.email);
emailText.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// put a debug statement to check
}
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
});
答案 2 :(得分:1)
您正在寻找TextWatcher。回调是不言自明的。根据您的需要,您可能希望将逻辑代码添加到onTextChanged,beforeTextChanged或afterTextChanged。在CharSequence对象中,您可以获取EditText的文本:
EditText mEditText = (EditText) findViewById(R.id.email);
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
// Here you may access the text from the object s, like s.toString()
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});