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

时间:2015-05-21 15:29:08

标签: android events keylistener

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

如果我有一个EditText et,我想要

et.setOnKeyListener(onKeyListener1);

et.setOnKeyListener(onKeyListener2);

有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:0)

不是真的......这是一个set方法而不是添加。您可以尝试使用回调或类似的东西从您的keylistener发送一些内容。

答案 1 :(得分:0)

不是,但你可以试试这个, 在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条件来选择你需要触发的东西。

我希望这有效,

答案 2 :(得分:0)

您无法将两个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;
    }
}

然后你可以定义第二个扩展CommonKeyListener的OnKeyListener,并为你的特定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);