有没有办法让1个onClick Lister用于许多按钮,我可以根据点击的按钮抛出case语句来做事情。
我知道我可以为100个按钮制作100个不同的听众,但我必须认为我可以用更少的代码行创建一些漂亮的变量。
答案 0 :(得分:6)
Button btn1, btn2;
public void onCreate(Bundle b)
{
// here you do normal things like assigning a
// content view to the activity, initiate buttons, etc.
// then you assign the same listener to both buttons
btn1.setOnClickListener(yourListener);
btn2.setOnClickListener(yourListener);
}
// declare a OnClickListener that will execute different actions
// depending on the view that was clicked
View.OnClickListener yourListener = new View.OnClickListener(){
public void onClick (View v){
if( v == btn1 ){
// do something
}
elseif( v == btn1 ){
// do another thing
}
}
};
答案 1 :(得分:1)
如果您使用的是1.6+版本的SDK,则可以使用android:onClick来设置视图的onClick处理程序。在您的活动中,您必须拥有具有以下签名的方法。视图是单击的视图。
void onClick(View v) {
switch(v.getId()) {
case R.id.button1:
//do something fantastic;
break;
}
}
答案 2 :(得分:0)
public class MainActivity extends Activity implements View.OnClickListener{
btnXXX.setOnClickListener(this);
public void onClick(View v) {
if (v.getId()==R.id.btnXXX){
dialog.show();
} else {
handleOtherViews(v);
}
}
答案 3 :(得分:0)
或者,您可以指定要在xml中调用的方法:
<Button android:id="@id/button" android:text="@string/button" android:onClick="someMethod" />