几周前我刚开始在android中开发。我正在使用一个简单的应用程序,它有2个活动但一个活动有15个按钮。现在我正在使用
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {/* Some Code */ });
我的onCreate中的每个按钮。这种方法对我来说似乎太过分了,也许不是最好的方法。
我知道使用onClick和实现onClickListeners的5种不同形式,但我想问哪种方式是正确的方法。最佳实践。
谢谢。
答案 0 :(得分:4)
在这种情况下,我可以将implements View.OnClickListener
添加到活动类,然后制作一个看起来像onClick
的{{1}}。
@Override
public void onClick(View v){
switch(v.getId()){
case R.id.button1:
// handle button1 click
break;
case R.id.button2:
// handle button3 click
break;
case R.id.button3:
// handle button3 click
break;
// etc...
}
}
如果所有这些按钮的操作都以某种方式相关,这才真正有意义,如果它们是,那么它可以显着减少代码重复。你仍然需要为每个人做view.setOnClickListener(this)
。
或者,如果您愿意,可以删除implements View.OnClickListener
和@Override
,只需在XML中注册您的方法,就像Kevin说的那样。这将允许你有多个这些"分组"点击听众。
答案 1 :(得分:1)
我认为,当你有这么多按钮时,最好的方法是将View.OnClickListener实现到你的活动,然后实现以下内容:
每一个按钮只需一行:
button.setOnClickListener(本);
覆盖onClick()方法并检查所选按钮的ID,并使用当前选定的按钮执行某些操作,例如:
// onClick is called when a view has been clicked.
@Override
// Parameter v stands for the view that was clicked.
public void onClick(View v) {
// getId() returns the id of the clicked view.
if(v.getId() == R.id.button1){
//you clicked the first button
}else if(v.getId() == R.id.button2){
//you clicked the second button
} else if ... // and so on for all of your buttons
}
答案 2 :(得分:0)
您可以使用xml属性onClick
:
<?xml version="1.0" encoding="utf-8"?>
<!-- layout elements -->
<Button android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me!"
android:onClick="myFancyMethod" />
<!-- even more layout elements -->