2012-07-10 75 views
0

我需要知道,複雜性方面有哪些更好。要麼身份從XML一個單獨的onClick方法這樣每個按鈕:Android OnClickListener複雜度

android:onClick:"clickHandler" 

和Java代碼:

public void clickHandler(View v){ 
     Button b = (Button) v; 
     //do something for that button 
     }; 

,或者標識一個方法,用於所有的按鈕,並且將它們與如果分離條件。

Public void clickHandler(View v){ 
     Button b = (Button) v; 
     if(b.getText().equals("a")){ 
     } 
     elseif(b.getText().equals("b")){ 
      } 
     //And so on. 
    } 

我不擅長計算複雜性等,但這個問題只是刺激,我不能回答它。但是我的理解是,第一種方法增加了很多代碼行!

+0

重視? – nkr 2012-07-10 20:29:15

+0

這是第一種方法!我只是問他們之間的不同。 – 2012-07-10 20:46:35

回答

1

我一般喜歡後者。除了我傾向於做一些事情,看起來更像是這樣的:

public void onClick(View v){ 
    switch(v.getId()){ 
     case R.id.button_a: 
     //do button a logic here 
     break; 
     case R.id.button_b: 
     //do button b logic here 
     break; 
    } 
} 

考慮讓Activity implement View.OnClickListener比你OnCreate()簡單爲什麼不使用不同的處理程序爲每個按鈕與findViewById(R.id.button_a).setOnClickListener(this);

+0

第1版+1。 – 2012-07-10 20:29:31

+0

是刪除了第二個版本... – 2012-07-10 20:31:21

+0

是的,我知道實現View.OnClickListener的方式,但由於不同的方面,在這個應用程序中不可能。 – 2012-07-10 20:47:49

1

我會使用第二個選項的版本。創建一個處理程序,然後使用switch語句來確定哪個視圖接收了事件。這是代碼效率,並不雜亂。此外,您不需要在xml中列出該屬性...我個人認爲在您的活動中查找ViewById()並實現onClickListener更容易。然後你可以在你的switch語句中使用每個按鈕的id。