Button 将文本设置为声音文件的名称

Button 将文本设置为声音文件的名称,button,audio,settext,Button,Audio,Settext,我有一个应用程序,只需点击一个按钮就可以播放我原始文件夹中的随机声音。它工作得很好,但是我尝试将按钮上的文本设置为下一个文件名失败。我离这里很远吗? 另外,我如何按顺序而不是随机播放文件?谢谢,请温柔一点 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

我有一个应用程序,只需点击一个按钮就可以播放我原始文件夹中的随机声音。它工作得很好,但是我尝试将按钮上的文本设置为下一个文件名失败。我离这里很远吗? 另外,我如何按顺序而不是随机播放文件?谢谢,请温柔一点

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

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

        final int[] btns = new int[]{R.raw.sound1, R.raw.sound2, R.raw.sound3, R.raw.sound4, R.raw.sound5, R.raw.sound6, R.raw.sound7, R.raw.sound8, R.raw.sound9, R.raw.sound10, R.raw.sound11, R.raw.sound12, R.raw.sound13, R.raw.sound14, R.raw.sound15, R.raw.sound16, R.raw.sound17, R.raw.sound18, R.raw.sound19, R.raw.sound20, R.raw.sound21, R.raw.sound22, R.raw.sound23, R.raw.sound24, R.raw.sound25, R.raw.sound26, R.raw.sound27, R.raw.sound28, R.raw.sound29, R.raw.sound30, R.raw.sound31, R.raw.sound32, R.raw.sound33, R.raw.sound34, R.raw.sound35, R.raw.sound36, R.raw.sound37, R.raw.sound38, R.raw.sound39, R.raw.sound40, R.raw.sound41, R.raw.sound42, R.raw.sound43, R.raw.sound44, R.raw.sound45, R.raw.sound46, R.raw.sound47, R.raw.sound48, R.raw.sound49, R.raw.sound50 };

        private Random rnd = new Random();

        @Override
        public void onClick(View v) {
            ((Button) v).setText(rnd);
            int sndToPlay = rnd.nextInt(btns.length);
            final MediaPlayer mp = MediaPlayer.createMainActivity.this, btns[sndToPlay]);
            mp.start();
        }
    );
}

您的一些代码有点不正确,但这里是更新的函数。您试图传入随机对象,而不是传入声音文件名

@Override
public void onClick(View v) {
  int sndToPlay = rnd.nextInt(btns.length);
  ((Button) v).setText(sndToPlay);
  final MediaPlayer mp = MediaPlayer.createMainActivity(btns[sndToPlay]);
  mp.start();
}

啊,好的,谢谢。但这对我不起作用。我可以使用重新排列的代码将按钮的文本设置为字符串,但传入sndToPlay时会崩溃。嗯……它应该使用valueOf()方法吗?