android-如何通过按钮标签获取资源?

8hhllhi2  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(644)

我有8个按钮在我的活动和8个小音频在屏幕上 res/raw 目录。单击一个按钮时,应用程序将播放与该特定按钮关联的音频。我将每个音频命名为与相关按钮的标签相同/相似。我想在我的活动中只有一种方法可以解决所有的问题。
到目前为止,我的情况是:

public class MainActivity extends AppCompatActivity {

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

    public void playPhrase(View view){

        if(view.getTag().toString().equals("doYouSpeak")){
            MediaPlayer mediaPlayer =  MediaPlayer.create(this, R.raw.doyouspeakenglish);
            mediaPlayer.start();
        }
        else if(view.getTag().toString().equals("goodEvening")){
            MediaPlayer mediaPlayer =  MediaPlayer.create(this, R.raw.goodevening);
            mediaPlayer.start();
        }

        // the other 6 cases

    }
}

有没有一种方法可以在不使用整个if/else语句的情况下使用相关的按钮标签(或id或其他方式)访问音频?比如:

public void playPhrase(View view){
    String tag = view.getTag().toString();
    MediaPlayer mediaPlayer =  MediaPlayer.create(this, R.raw.tag); 
    mediaPlayer.start();
}
e37o9pze

e37o9pze1#

可以使用getidentifier()方法通过字符串名称获取id。

String tag = view.getTag().toString();    
Int id = getResources().getIdentifier(tag, "raw", getPackageName());
MediaPlayer mediaPlayer =  MediaPlayer.create(this, id);
mediaPlayer.start();

相关问题