Android - 如何通过按钮标签获取资源?
Android - how to get resource by button tag?
我的 Activity 目录中有 8 个按钮,res/raw
目录中有 8 个小音频。单击一个按钮时,应用程序会播放与该特定按钮关联的音频。我将每个音频命名为与关联按钮的标签相同/相似。我只想在我的 activity 中使用一种方法来解决所有情况。
这是我目前所拥有的:
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();
}
您可以使用 getIdentifier() 方法通过字符串名称获取 ID。
String tag = view.getTag().toString();
Int id = getResources().getIdentifier(tag, "raw", getPackageName());
MediaPlayer mediaPlayer = MediaPlayer.create(this, id);
mediaPlayer.start();
我的 Activity 目录中有 8 个按钮,res/raw
目录中有 8 个小音频。单击一个按钮时,应用程序会播放与该特定按钮关联的音频。我将每个音频命名为与关联按钮的标签相同/相似。我只想在我的 activity 中使用一种方法来解决所有情况。
这是我目前所拥有的:
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();
}
您可以使用 getIdentifier() 方法通过字符串名称获取 ID。
String tag = view.getTag().toString();
Int id = getResources().getIdentifier(tag, "raw", getPackageName());
MediaPlayer mediaPlayer = MediaPlayer.create(this, id);
mediaPlayer.start();