2012-07-01 38 views
0

我想问你如何添加几个监听器到android中的几个按钮。Android如何正确添加几个按钮监听器

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

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


} 

回答

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 
} 

等等。

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

+0

谢谢。你能告诉我现在可以在哪里看到System.out.println(“X”)吗?因为它不在控制台中。 – Yoda

+1

不要使用它。相反,使用Log.d(调试),Log.e(错误),Log.w(警告)等日志语句。 –

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

然而,这不会与新的片段设计模式工作,如果你使用的片段,然后坚持选项#1或#2。