2012-07-01 78 views
0

我想問你如何添加幾個監聽器到android中的幾個按鈕。Android如何正確添加幾個按鈕監聽器

  1. 添加一個公共偵聽器並檢查哪個按鈕調用了偵聽器。
  2. 添加多個匿名聽衆。
  3. 添加一些方法將被調用(XML格式的onClick屬性描述)

AD。 1如何檢查哪個按鈕叫做監聽器(比如e.getSource(),其中e是Event)。我得到了這樣的代碼,並且把按鈕作爲一個字段是不好的。我應該如何改正它? 3.選項有什麼缺點?

package com.example.fiszki; 

import android.os.Bundle; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.support.v4.app.NavUtils; 


public class MainActivity extends Activity implements OnClickListener { 
Button b; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    b = (Button) findViewById(R.id.button1); 
    b.setOnClickListener(this); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

public void onClick(View arg0) { 
    b.setText("kupa");  
} 


} 

回答

1

1和2都是最常用的。我很少看到3實施。 1,區分按鈕之間你會需要一個if語句如下:

if(arg0.getId() == R.id.buttonId) 
{ 
//Code for this button 
} 
else if(arg0.getId() == R.id.buttonId2) 
{ 
//Code for second button 
} 

等等。

個人而言,我更喜歡第二個選項,因爲您可以很容易地知道代碼屬於哪個按鈕,特別是當您在佈局上有很多按鈕時。

+0

謝謝。你能告訴我現在可以在哪裏看到System.out.println(「X」)嗎?因爲它不在控制檯中。 – Yoda

+1

不要使用它。相反,使用Log.d(調試),Log.e(錯誤),Log.w(警告)等日誌語句。 –

0

我更喜歡#3,如果可能的話,恕我直言,它更乾淨。例如

<Button android:id="@+id/button1" android:onClick="onButtonClicked" /> 
<Button android:id="@+id/button2" android:onClick="onButtonClicked" /> 
<Button android:id="@+id/button3" android:onClick="onButtonClicked" /> 

然後在你的活動

public void onButtonClicked(View v) { 
    switch (v.getId()) { 
     case R.id.button1: 
     break; 
     case R.id.button2: 
     break; 
     case R.id.button3: 
     break; 
    } 
} 

然而,這不會與新的片段設計模式工作,如果你使用的片段,然後堅持選項#1或#2。