将两个不同的 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);
如何将 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);