使用Switch语句处理按钮单击

use*_*525 15 android button listener

我正试图围绕视图,听众等.我有一个带有2个按钮的活动:按钮和按钮停止.我的问题是我无法完全绕过Views和Listener来生成一个有效的switch语句.

例如,我想创建一个SINGLE Listener并以某种方式使用它来确定单击了哪个按钮.然后以某种方式使用我的switch语句点​​击按钮的ID,但是,一切都我在网上找似乎使用单独的侦听器为每个按钮,然后以某种方式使用该视图作为参数传递给switch语句.

我意识到下面的代码不正确,但我正在寻找完成上述操作所需的更改.

我想根据点击的按钮来控制MediaPlayer.我有:

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

        public void onClick(View v) {
           // Perform action on click
          switch(v.getId()) {
          case R.id.buttonplay:
          //Play voicefile
          MediaPlayer.create(getBaseContext(), R.raw.voicefile).start();
          break;
          case R.id.buttonstop:
          //Stop MediaPlayer
              MediaPlayer.create(getBaseContext(), R.raw.voicefile).stop();
          break;
         }
   }
    });
Run Code Online (Sandbox Code Playgroud)

最终,我希望以最直接的方式打开点击的任何按钮.我相信我的困惑很大一部分源于在此上下文中使用onClickListeners和Views的方式.

}

dog*_*ane 41

实现此目的的一种方法是让您的类实现OnClickListener,然后将其添加到您的按钮,如下所示:

例:

//make your class implement OnClickListener
public class MyClass implements OnClickListener{

        ...

        //Create your buttons and set their onClickListener to "this"
        Button b1 = (Button) findViewById(R.id.buttonplay);   
        b1.setOnClickListener(this);

        Button b2 = (Button) findViewById(R.id.buttonstop);   
        b2.setOnClickListener(this);

        ...

        //implement the onClick method here
        public void onClick(View v) {
           // Perform action on click
          switch(v.getId()) {
            case R.id.buttonplay:
              //Play voicefile
              MediaPlayer.create(getBaseContext(), R.raw.voicefile).start();
              break;
            case R.id.buttonstop:
              //Stop MediaPlayer
              MediaPlayer.create(getBaseContext(), R.raw.voicefile).stop();
              break;
          }
       }
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Android开发人员>处理UI事件.


小智 6

只需更改类(我认为它是主Activity)来实现View.OnClickListener,并在onClick方法中放置要放置的常规onClick操作:

public class MediaPlayer extends Activity implements OnClickListener {

@Override
public void onCreate(Bundle savedInstanceState) {
    Button b1 = (Button) findViewById(R.id.buttonplay);       
    b1.setOnClickListener(this);
    //{YOUR APP}
}


@Override
public void onClick(View v) {
    // Perform action on click
    switch(v.getId()) {
    case R.id.buttonplay:
        //Play voicefile
        MediaPlayer.create(getBaseContext(), R.raw.voicefile).start();
        break;
    case R.id.buttonstop:
        //Stop MediaPlayer
        MediaPlayer.create(getBaseContext(), R.raw.voicefile).stop();
        break;
    }

}}
Run Code Online (Sandbox Code Playgroud)

我从这个视频中看到了它:http://www.youtube.com/watch?v = rm-hNlTD1H0.这对初学者来说很好.


Nav*_*hra 5

嗨,使用开关盒在按钮之间切换非常简单:-

 package com.example.browsebutton;


    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;

        public class MainActivity extends Activity implements OnClickListener {
        Button b1,b2;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                b1=(Button)findViewById(R.id.button1);

                b2=(Button)findViewById(R.id.button2);
                b1.setOnClickListener(this);
                b2.setOnClickListener(this);
            }



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

                 int id=v.getId();
                 switch(id) {
                    case R.id.button1:
                  Toast.makeText(getBaseContext(), "btn1", Toast.LENGTH_LONG).show();
                //Your Operation

                  break;

                    case R.id.button2:
                          Toast.makeText(getBaseContext(), "btn2", Toast.LENGTH_LONG).show();


                          //Your Operation
                          break;
            }

        }}
Run Code Online (Sandbox Code Playgroud)