onUserInteraction未调用

时间:2017-10-03 10:13:06

标签: android

我想实现用户不活动事件。我有这么多屏幕,每个都有很多edittexts。所以我实现了onUserInteraction()方法来检测屏幕上的用户操作。但不幸的是,当用户在光标位于edittext内时键入。 onUserInteraction()永远不会被调用。一种可能的解决方案是实现文本更改侦听器,但我必须在我不想做的所有edittexts中实现它。

那么还有其他任何解决方案,以便即使在活动内部我也可以获得按键吗?

2 个答案:

答案 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中更改文本时,您将回调基本活动。我希望能帮到你