将两个不同的onKeyListener设置为同一视图-Android
如何将2 onKeyListener设置为同一视图 例如,如果我有一个EditText et,我想要 et.setOnKeyListener(onKeyListener1) et.setOnKeyListener(onKeyListener2)将两个不同的onKeyListener设置为同一视图-Android,android,events,keylistener,Android,Events,Keylistener,如何将2 onKeyListener设置为同一视图 例如,如果我有一个EditText et,我想要 et.setOnKeyListener(onKeyListener1) et.setOnKeyListener(onKeyListener2) 有什么办法可以做到这一点吗?不太可能。。。这是一个集合方法,不是加法。您可以尝试通过回调或类似的方式从您的keylistener发送一些信息。不太可能,但是,您可以试试这个, 针对单击时需要执行的操作编写3种不同的方法 public void oncli
有什么办法可以做到这一点吗?不太可能。。。这是一个集合方法,不是加法。您可以尝试通过回调或类似的方式从您的keylistener发送一些信息。不太可能,但是,您可以试试这个, 针对单击时需要执行的操作编写3种不同的方法
public void onclick1 (){
// your code
}
public void onclick2 (){
// your code
}
public void onclickMain (View v){
// your code
}
使用onclickmain作为XML部件上的onclick事件,如下所示
android:onclick="onclickMain"
然后在onclickMain上,您可以使用if条件来选择需要触发的内容
我希望这能起作用,您不能将两个OnKeyListener设置为同一个EditText 现在,我不确定您的特殊EditText中还有哪些附加功能,但也许您可以实现View.OnKeyListener来实现您想要的:
public class CommonOnKeyListener implements View.OnKeyListener{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
/*
* Here, insert the code that is common to all your EditTexts
*/
return false;
}
}
然后,您可以定义第二个OnKeyListener,该OnKeyListener扩展CommonKeyListener,并为特定的EditText执行一些额外的工作:
public class CustomOnKeyListener extends CommonOnKeyListener{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
/* Make a call to the parent class's onKey method
* so you can reuse the functionality in your CommonOnKeyListener
*/
boolean result = super.onKey(v, keyCode, event);
/*
* Your additional code goes here (e.g. for your special EditText)
*/
return false;
}
}
View.OnKeyListener listener1 = new CommonOnKeyListener();
View.OnKeyListener listener2 = new CustomOnKeyListener();
// Set the key listeners to the appropriate EditTexts
yourEditText1.setOnKeyListener(listener1);
yourEditText2.setOnKeyListener(listener1);
yourSpecialEditText.setOnKeyListner(listener2);
现在,所有EditText都可以使用CommonOnKeyListener,并且可以将CustomOnKeyListener设置为特殊的EditText:
public class CustomOnKeyListener extends CommonOnKeyListener{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
/* Make a call to the parent class's onKey method
* so you can reuse the functionality in your CommonOnKeyListener
*/
boolean result = super.onKey(v, keyCode, event);
/*
* Your additional code goes here (e.g. for your special EditText)
*/
return false;
}
}
View.OnKeyListener listener1 = new CommonOnKeyListener();
View.OnKeyListener listener2 = new CustomOnKeyListener();
// Set the key listeners to the appropriate EditTexts
yourEditText1.setOnKeyListener(listener1);
yourEditText2.setOnKeyListener(listener1);
yourSpecialEditText.setOnKeyListner(listener2);
为什么需要有两个OnKeyListener?我会在EditText中添加一个TextWatcher,然后您可以对所有键做出反应,并且只在字符(通过参数接收)是您要对其作出反应的字符时才可以执行任何操作。我有一个用于所有编辑文本的公共键侦听器,但是,有一些额外的功能必须在其中一个编辑文本中实现。我不想重新发明轮子,做一个新的监听器,有相同的功能(还有一些额外的功能)。这就是为什么要在单独的侦听器中使用额外的功能。