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

Set two different onKeyListener to the same view - Android

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

例如,如果我有 EditText 等,我想要

et.setOnKeyListener(onKeyListener1);

et.setOnKeyListener(onKeyListener2);

有什么方法可以实现吗?

不是真的...这是一个设置方法,而不是添加。您可以尝试通过回调或类似的方式从密钥监听器中发送一些内容。

不是真的,但是,你可以试试这个, 为您需要执行的操作编写不同的 3 种方法 onClicks,

public void onclick1 (){
 // your code
}

public void onclick2 (){
 // your code
}

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

像这样在 XML 部分使用 oncclickMain 作为你的 onclick 事件

android:onclick="onclickMain"

然后在 onclickMain 上你可以使用 if 条件 select 你需要触发什么。

我希望这能奏效,

您不能将两个 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,它扩展 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;
    }
}

现在,您所有的 EditText 都可以使用 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);