Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使按钮播放特定索引的声音_Java_Android - Fatal编程技术网

Java 如何使按钮播放特定索引的声音

Java 如何使按钮播放特定索引的声音,java,android,Java,Android,所以我正在创建一个程序,在每次点击按钮时播放特定的声音。我已经创建了一个歌曲数组,但是当我运行程序时,所有的按钮都会播放数组中的第一个声音。我试图让按钮播放特定索引的声音,下面是我的代码 public class MainActivity extends AppCompatActivity implements View.OnClickListener { int[] songs = {R.raw.doyouspeakenglish, R.raw.goodevening, R.raw.

所以我正在创建一个程序,在每次点击按钮时播放特定的声音。我已经创建了一个歌曲数组,但是当我运行程序时,所有的按钮都会播放数组中的第一个声音。我试图让按钮播放特定索引的声音,下面是我的代码

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    int[] songs = {R.raw.doyouspeakenglish, R.raw.goodevening, R.raw.hello};
    MediaPlayer mediaPlayer;
    int current_index = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mediaPlayer = MediaPlayer.create(this, songs[current_index]);

        Button button1 = findViewById(R.id.button1);
        Button button2 = findViewById(R.id.button2);
        Button button3 = findViewById(R.id.button3);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this); 
}

 @Override
    public void onClick(View v) {

        switch (v.getId()) {
            case R.id.button1:
                 current_index =0;
                mediaPlayer.start();
                break;
            case R.id.button2:
                current_index = 1;
                mediaPlayer.start();
            case R.id.button3:
                current_index = 2;
                mediaPlayer.start();
                break; 
  } 
 }
}

您将获得MediaPlayer的第一个声音。因此,当您的活动正在创建时,它只在
onCreate
方法中放置声音,该方法只调用一次

您需要放置
mediaPlayer=mediaPlayer.create(这是歌曲[current_index])内部
onClick
方法

因此,您的
onClick
方法将看起来像这样:

@Override
    public void onClick(View v) {

        switch (v.getId()) {
            case R.id.button1:
                 current_index =0;
                break;
            case R.id.button2:
                current_index = 1;
            case R.id.button3:
                current_index = 2;
                break; 
  } 
    mediaPlayer = MediaPlayer.create(this, songs[current_index]);
    mediaPlayer.start();
 }