0

想请教一下如何给android的几个按钮添加几个监听器。

  1. 添加一个通用侦听器并检查哪个按钮调用了侦听器。
  2. 添加多个匿名侦听器。
  3. 添加一些将被调用的方法(在 XML onClick 属性中描述)

广告。1 如何检查哪个按钮调用了侦听器(例如 e.getSource() ,其中 e 是事件)。我得到了这种代码,将按钮保留为字段并不好。我应该如何纠正它?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");      
}


}
4

2 回答 2

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
}

等等。

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

于 2012-07-01T23:18:44.320 回答
0

如果可能的话,我更喜欢#3,恕我直言,它更干净。例如

<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。

于 2012-07-02T00:53:26.337 回答