繁体   English   中英

将两个不同的onKeyListener设置为同一视图-Android

[英]Set two different onKeyListener to the same view - Android

如何将2 onKeyListener设置为同一视图。

例如,如果我有一个EditText等,我想

et.setOnKeyListener(onKeyListener1);

et.setOnKeyListener(onKeyListener2);

有没有办法可以做到这一点?

不完全是。这是一种设置方法,不能添加。 您可以尝试通过回调或类似的方式将某些内容发送出您的按键监听器。

并非如此,您可以尝试一下,针对您要做的onClicks编写不同的3种方法,

public void onclick1 (){
 // your code
}

public void onclick2 (){
 // your code
}

public void onclickMain (View v){
 // your code
}

像这样将oncclickMain用作XML部分的onclick事件

android:onclick="onclickMain"

然后在onclickMain上,您可以使用if条件来选择需要触发的东西。

我希望这行得通,

您不能将两个OnKeyListeners设置为相同的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,它扩展了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;
    }
}

现在,所有的EditTexts都可以使用CommonOnKeyListener,并且可以将CustomOnKeyListener设置为特殊的EditText:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM