我想实现用户不活动事件。我有这么多屏幕,每个都有很多edittexts。所以我实现了onUserInteraction()
方法来检测屏幕上的用户操作。但不幸的是,当用户在光标位于edittext内时键入。 onUserInteraction()
永远不会被调用。一种可能的解决方案是实现文本更改侦听器,但我必须在我不想做的所有edittexts中实现它。
那么还有其他任何解决方案,以便即使在活动内部我也可以获得按键吗?
答案 0 :(得分:0)
您可以为活动中的所有编辑文本创建通用文本搜索器。
<强>声明:强>
private class GenericTextWatcher implements TextWatcher{
private View view;
private GenericTextWatcher(View view) {
this.view = view;
}
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
public void afterTextChanged(Editable editable) {
String text = editable.toString();
switch(view.getId()){
case R.id.name:
model.setName(text);
break;
case R.id.email:
model.setEmail(text);
break;
case R.id.phone:
model.setPhone(text);
break;
}
}
}
<强>用法:强>
name = (EditText) findViewById(R.id.name);
name.setText(model.getName());
name.addTextChangedListener(new GenericTextWatcher(name));
email = (EditText) findViewById(R.id.email);
email.setText(model.getEmail());
email.addTextChangedListener(new GenericTextWatcher(email));
phone = (EditText) findViewById(R.id.phone);
phone.setText(model.getPhone());
phone.addTextChangedListener(new GenericTextWatcher(phone));
答案 1 :(得分:0)
我假设你有所有活动的基础活动。如果是这样的话。你只需要在基本活动中实现TextWatcher。并且在每个EditText中使用setAddTextChangeListener(this)。每当在任何活动的任何EdiText中更改文本时,您将回调基本活动。我希望能帮到你