onclick()的最佳实现

时间:2015-06-29 13:54:39

标签: android

几周前我刚开始在android中开发。我正在使用一个简单的应用程序,它有2个活动但一个活动有15个按钮。现在我正在使用

button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {/* Some Code */ });

我的onCreate中的每个按钮。这种方法对我来说似乎太过分了,也许不是最好的方法。

我知道使用onClick和实现onClickListeners的5种不同形式,但我想问哪种方式是正确的方法。最佳实践。

谢谢。

3 个答案:

答案 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实现到你的活动,然后实现以下内容:

  1. 每一个按钮只需一行:

    button.setOnClickListener(本);

  2. 覆盖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 -->

More Information