2012-06-27 36 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;