2012-04-23 164 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; 
     } 
}