2012-07-10 38 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。