2012-06-27 35 views
0

我是一名初學者,主要負責Android和java的編碼工作,至今在各種教程中我發現了兩種處理點擊按鈕的方法。在處理點擊方式上的差異

第一個:

button.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       //do your thing 
      } 
     }); 

第二個涉及到把android:onClick="someMethod"在一個按鈕的屬性在main.xml中,然後簡單地創建在活性的方法someMethod

我想知道這兩種方法有什麼不同。比另一個更好嗎?或者他們的工作方式微妙不同?對我來說他們似乎也這樣做:P

謝謝!

回答

1

我想知道這兩種方法有什麼區別。一個 比另一個好嗎?

結果是一樣的。但區別在於代碼的可讀性。

android:onClick="someMethod" 

這種方法我不推薦給你。

我推薦你使用anonymous classes就像你上面的意思。

此外,您的班級可以實施例如View.OnClickListener,然後您只需實施onClick()方法,並且您可以爲許多小部件提供一種方法。

public class Main extends Activity implements View.OnClickListener { 
    public void onClick(View view) { 
     switch(view.getId()) { 
     case R.id.startBtn: 
      // do some work 
     break; 
     case R.id.anotherWidgetId: 
      // do some work 
     break; 
     } 
    } 
} 

我認爲這也是一個很好的做法,你只有一種方法和代碼有更少的線條和更乾淨。

0

第一個:你正在務實地定義一個方法,這將在每次按下按鈕時被調用。 第二個:你提到當按鈕被按下時要調用的活動的方法名稱。

完全取決於您的喜好,您喜歡設置點擊偵聽器的方式。

就我個人而言,我喜歡實用地設置點擊偵聽器,以便我知道哪些代碼將在執行onClick按鈕時執行代碼。

0

當您使用android:onClick =「someMethod」時,該方法位於保存點擊視圖的活動中。如果您在列表項上使用此功能,則可以更方便地(在某些情況下)在活動上處理點擊。 如果您將使用匿名類方法,則需要將其設置在適配器上,該適配器並不總是可以訪問該活動(如果是這樣 - 它可能會變得麻煩......)。因此,如果您需要持有您列表的活動(持有可點擊的項目) - 我認爲使用android:onClick方法會更清晰。

除此之外 - 它幾乎相同。請務必記錄您使用android:onClick調用的方法,因爲稍後很難跟蹤其來源。

0

要處理雙點擊Android按鈕

// These variables as global 
private final static long DOUBLE_CLICK_INTERVAL=250; 
private static boolean doubleClick=false; 
private static long lastClickTime=0;  
private static Handler handler; 

// In button method 
long clickTime=SystemClock.uptimeMillis(); 

if(clickTime-lastClickTime <= DOUBLE_CLICK_INTERVAL) { // If double click... 

    Toast.makeText(getApplicationContext(), "Double Click Event",Toast.LENGTH_SHORT).show(); 
    doubleClick=true; 

} else { // If not double click.... 

    doubleClick=false; 
    handler=new Handler(); 
    handler.postDelayed(new Runnable(){ 
     @Override 
     public void run(){ 
      if(!doubleClick){ 
       Toast.makeText(getApplicationContext(),"Single Click Event",Toast.LENGTH_SHORT).show(); 
      }     
     } 
    }, DOUBLE_CLICK_INTERVAL);  
} 

lastClickTime=clickTime;