[英]Android adding onClick on soft keyboard on activity
我正在尝试在活动的软键盘上添加onClick。 原因是我要检查用户当前是否处于活动状态。 所以我所做的是,如果用户单击该应用程序,我将重置一个不活动计时器。 问题在于,当用户与软键盘进行交互时,它不会调用函数onUserInteraction()
,该函数是我在活动中覆盖的函数。 因此,我需要帮助以找到一种方法来跟踪我是否在活动中针对每个文本字段等单击了软键盘。 (我知道我可以在每个EditText字段上插入一个onclick listerner,但我宁愿不这样做,因为如果我使用许多EditText字段,那就不太好了)
要处理单个按键,请适当地实现onKeyDown()或onKeyUp()。 通常,如果要确保仅收到一个事件,则应使用onKeyUp()。 如果用户按住按钮,则会多次调用onKeyDown()。
创建一个类似于UserInteractionEditText
类的类,并扩展EditText
并设置该类中的onclick lisetener,在您使用EditText
在所有XML布局中使用该类,您可以执行以下操作:
public class UserInteractionEditText extends EditText implements View.OnClickListener {
public UserInteractionEditText(Context context) {
super(context);
}
public UserInteractionEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public UserInteractionEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void onClick(View v) {
//TODO:: Handle user Click Events
}
}
这就是我最终得到的。 我希望有其他东西,但这可以解决问题。 谢谢您的帮助!
public class ActivityEditText extends android.support.v7.widget.AppCompatEditText {
private TextWatcher tw;
public ActivityEditText(Context c)
{
super(c);
this.setOurTCL();
}
public ActivityEditText(Context context, AttributeSet attrs) {
super(context, attrs);
this.setOurTCL();
}
public ActivityEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.setOurTCL();
}
private void setOurTCL()
{
this.tw = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
InactivityManager.resetTime();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
};
this.addTextChangedListener(this.tw);
}
@Override
public void removeTextChangedListener(TextWatcher watcher) {
if(!watcher.equals(this.tw))
super.removeTextChangedListener(watcher);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.