2012-04-23 125 views
0

假设我有三个听众指向(this)的所有听众。因此,如果我按下任何按钮,它将从活动的开始处开始,而不管按钮是否被按下?Onclick Android的听众

回答

3

不,它会继续执行您的活动的覆盖方法onClick()

listeners point to (this) 

你必须要实现onClickListener到您的活动将覆盖onClick()

要验证已单击的观点,你必须做一些像

@Override 
public void onClick(View v) 
{ 
    if(v== controlName) 
     // controlName is clicked 
} 
+0

哦....得到它的伴侣感谢名单...我可以使用view.getID()来区分按钮仪式?在这种情况下,这些按钮ID将在所有设备中保持不变? – 2012-04-23 07:30:54

+0

您可以在布局XML中定义ID。或者,以编程方式分配它们,所以是的,总是一样的。 – Simon 2012-04-23 07:35:11

-1

令人困惑的问题...

无论如何,这里它是一个听众的例子。

public class MyClass extends Activity { 
    private Button firstBtn; 
    private Button secondBtn; 
    private Button thirdBtn; 

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    firstBtn = (Button) findViewById(R.id.firstBtn); 
    secondBtn = (Button) findViewById(R.id.secondBtn); 
    thirdBtn = (Button) findViewById(R.id.thirdBtn); 

    firstBtn.setOnClickListener(new OnClickListener() 
    {   
     public void onClick(View v) 
     { 
      Log.d("MyClass", "first button clicked!"); 
     } 
    }); 

    secondBtn.setOnClickListener(new OnClickListener() 
    {   
     public void onClick(View v) 
     { 
      Log.d("MyClass", "second button clicked!"); 
     } 
    }); 

    thirdBtn.setOnClickListener(new OnClickListener() 
    {   
     public void onClick(View v) 
     { 
      Log.d("MyClass", "third button clicked!"); 
     } 
    }); 
    } 

}

希望它能帮助。干杯

+0

我没有投票给你,但是你写的代码很潦草,而且可读性很差。为每个按钮设置一个匿名监听器,而不是照顾活动范围内的监听器,这会使代码无法维护... – thepoosh 2012-04-23 08:56:33

+0

当然,一切都有道理。但一切都取决于上下文,匿名听众可以完全接受简单的在线内容。并且可以增加更少的开销。 – bmartins 2012-04-23 09:09:07

+0

Thanx的例子...不知道它可以这样做。但这又取决于上下文......对我来说,如果还有其他的解决方案...... – 2012-04-23 09:48:08

0

你可以做的是使用开关盒,并了解点击的按钮是什么。

试试这个:

class stuff extends Activity implements onClickListener { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     Button button1 = (Button) findViewById(R.id.button1); 
     Button button2 = (Button) findViewById(R.id.button2); 
     Button button3 = (Button) findViewById(R.id.button3); 

     button1.setOnClickListener(this); 
     button2.setOnClickListener(this); 
     button3.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.button1: 
      // do something 
      break; 
     case R.id.button2: 
      // do something else 
      break; 
     case R.id.button3: 
      // do yet another thing 
      break; 
     default: 
      // do nothing 
      break; 
     } 
}