【问题标题】:Android - how to get resource by button tag?Android - 如何通过按钮标签获取资源?
【发布时间】:2020-08-19 09:42:13
【问题描述】:

我的 Activity 中有 8 个按钮,res/raw 目录中有 8 个小音频。单击一个按钮时,应用程序会播放与该特定按钮关联的音频。我将每个音频命名为与关联按钮的标签相同/相似。我只想在我的活动中使用一种方法来解决所有情况。

这是我目前所拥有的:

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();
}

【问题讨论】:

    标签: java android audio android-mediaplayer


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多