2012-06-08 72 views
0

我必须创建按钮选项,其中每个按钮执行特定的任务。那么如何做按钮选择。我试过的代码在这里。Android中的按钮选择

  Button b1  
     b1.setOnClickListener(new Button.OnClickListener(){ 

    public void onClick(View v) { 
       if(v.getId()==R.id.button1) 
       {  //do something 
         } 
         if(v.getId()==R.id.button2) 
       {  //do something 
          } 
         }); 

对于单按钮功能它的工作正常与此代码。

  Button b1= (Button)findViewById(R.id.button1);   
     b1.setOnClickListener(new Button.OnClickListener(){ 

    public void onClick(View v) { 
       if(v.getId()==R.id.button1) 
       {  //do something 
         } 
         }}); 
+1

实现OnClickListener在你的活动,并注册每个按钮。然后在onClick()中使用switch case检查按钮的id并根据它执行特定的任务。 – user370305

回答

0

尝试这一个 -

Button button = (Button) findViewById(R.id.button1); 

    // Listening to Login Screen link 
    button.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) { 
      // do your stuff here 
     } 
    }); 

如果你已经多个按钮,那么,试试这个 -

public class buttonsexample extends Activity implements OnClickListener 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button b1 = (Button)findViewById(R.id.button1); 
     Button b2 = (Button)findViewById(R.id.button2); 
     Button b3 = (Button)findViewById(R.id.button3); 
     b1.setOnClickListener(this); 
     b2.setOnClickListener(this); 
     b3.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) 
    { 
     // TODO Auto-generated method stub 
     int id = v.getId(); 
     if(id == R.id.button1) 
     { 
      // do your stuff here 
     }else if(id == R.id.button2) 
     { 
      // do your stuff here 
     }else if(id == R.id.button3) 
     { 
      // do your stuff here 
     } 
    } 
} 
+2

发展的神奇之处在于,你可以用许多方式做你想做的事情,夏威夷.five-0 ...有些人比其他人更优美...;) –

+0

好的。随着编辑,它更美丽...;) –

+0

你不应该选择很多方法,但只有最有效的方式。 – Sajmon

0
Button b1= (Button)findViewById(R.id.button1);   
     b1.setOnClickListener(new Button.OnClickListener(){ 

    public void onClick(View v) { 
         }}); 

Button b2= (Button)findViewById(R.id.button1);   
     b2.setOnClickListener(new Button.OnClickListener(){ 

    public void onClick(View v) { 
         }}); 

等等...

或者可选地

public class ABCActivity extends Activity implements OnClickListener { 
Button b1= (Button)findViewById(R.id.button1); 
Button b2= (Button)findViewById(R.id.button2); 

b1.setOnClickListener(this); 
b2.setOnClickListener(this); 


@Override 
    public void onClick(View v) { 

     switch (v.getId()) { 
     case R.id.button1: 
      break; 
     case R.id.button2: 
      break; 

    } 
+0

这不是一个很长的方法吗?没有直接开关的情况下可以应用吗?] – dreamhigh

+0

更新了答案,如果你想使用'ImageButton'用'Button'改变它,它就会工作。 –

1

如果你想使用这个模式

if(v.getId()==R.id.button1) 
{  
    //do something 
} 
if(v.getId()==R.id.button2) 
{  
    //do something 
} 

你必须让你的类实现“OnClickListener”和实施“点击”的方法。 然后设置监听到你的按钮,你只需要设置:

b1.setOnClickListener(this); 
+0

一个更优雅的方式来测试身份证将是使用开关/案例模式...;) –

3

例如,你有超过3个按钮意味着,

所有你必须首先实现OnClickListener

for ex. public class ImageViewer extends Activity implements OnClickListener{} 

Button b1=(Button)findViewById(R.id.button01); 
Button b2=(Button)findViewById(R.id.button02); 
Button b3=(Button)findViewById(R.id.button03); 

之后,

b1.setOnClickListener(this); 
b2.setOnClickListener(this); 
b3.setOnClickListener(this); 

现在,您IMPL EMENT onClick

public void onClick(View v) { 

     switch (v.getId()) { 

     case R.id.button01: 
     //perform your task 
     break; 
     case R.id.button02: 
     //perform your task 
     break; 
     case R.id.button03: 
     //perform your task 
     break; 
     } 
     } 

你只是一个单一的按一下按钮功能是指,

Button b1=(Button)findViewById(R.id.button01); 

     b1.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       //perform your task 
      } 
     }); 
+0

这对图像按钮的工作是否也一样? – dreamhigh

+0

是的,它会的。例如。 ImageButton I1 =(ImageButton)findViewById(R.id.button01); - > I1。setOnClickListener(this); - >在onclick方法中给出id – Aerrow

+0

最受欢迎...快乐编码.. :) – Aerrow

0

如果你不想实现OnClickListener你可以做这样的

Button b1= (Button)findViewById(R.id.button1); 
Button b2= (Button)findViewById(R.id.button2); 
b1.setOnClickListener(listen); 
b2.setOnClickListener(listen); 

OnClickListener listen=new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 


    switch (v.getId()) { 

      case R.id.button1: 
      //perform your task 
      break; 
      case R.id.button2: 
      //perform your task 
      break; 
      } 

     } 
    }; 
+0

使用Switch case而不是使用if – Aerrow