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

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

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

  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_main);
  6. }
  7. public void playPhrase(View view){
  8. if(view.getTag().toString().equals("doYouSpeak")){
  9. MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.doyouspeakenglish);
  10. mediaPlayer.start();
  11. }
  12. else if(view.getTag().toString().equals("goodEvening")){
  13. MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.goodevening);
  14. mediaPlayer.start();
  15. }
  16. // the other 6 cases
  17. }
  18. }

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

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

e37o9pze1#

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

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

相关问题