我有很好的 C 背景,现在正在为 android/java 编写代码。 我无法理解为什么处理程序函数的函数定义是在另一个函数内完成的。代码变得如此困惑且难以维护和理解(来自 C 程序员的观点)。
所以我有这个代码
final Button btnOpenPopup = (Button)findViewById(R.id.menuButton);
btnOpenPopup.setOnClickListener(new
Button.OnClickListener()
{...}
可不可以有一个函数
myButtonClickListner() {}
在类中定义,btnOpenPopup.setOnClickListener((SomeCast)myButtonClickListner
我认为一定有办法,但我找不到它..
请评论。
最佳答案
嗯,有两种方法可以做到这一点:
1- 让包含类实现 OnClickListener 接口(interface)。例如:
public class MainActivity extends Activity implements OnClickListener{
//...
public void onCreate(Bundle savedState){
//...
final Button btnOpenPopup = (Button)findViewById(R.id.menuButton);
btnOpenPopup.setOnClickListener(this);
}
public void onClick(View v){
switch(v.getId()){
case R.id.button1:
//
break;
}
}
2- 第二种方法是 Selvin 在他的评论中描述的方法:创建一个单独的类,它实现 OnClickListener 接口(interface),并在 onCreate() 中实例化它。因此,假设您在自己的 myButtonListener.java 文件中有一个 myButtonListener 类,您可以简单地执行以下操作:
final Button btnOpenPopup = (Button)findViewById(R.id.menuButton);
btnOpenPopup.setOnClickListener(new myButtonListener);
关于java - C 和 Java 如何将函数定义分开,而不是 new OnClickHandler(){,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16982319/