Android如何正确添加几个按钮监听器

时间:2012-07-01 23:14:43

标签: java android actionlistener

我想问你如何在android中的几个按钮中添加几个监听器。

  1. 添加一个公共侦听器并检查哪个按钮调用了侦听器。
  2. 添加多个匿名侦听器。
  3. 添加一些将被调用的方法(在XML onClick属性中描述)
  4. 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");      
    }
    
    
    }
    

2 个答案:

答案 0 :(得分: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
}

等等。

就个人而言,我更喜欢第二个选项,因为您可以轻松地知道代码所属的按钮,尤其是当布局上有很多按钮时。

答案 1 :(得分:0)

如果可能,我更喜欢#3,恕我直言,它更清洁。 e.g。

<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;
    }
}

但是,如果您使用的是Fragment,那么这将不适用于新的Fragment设计模式,然后坚持选项#1或#2。