我的代码如下:
cry = MediaPlayer.create(this, R.raw.bulbasaur);
我想要的是这个:
cry = MediaPlayer.create(this, ("R.raw."+pokemon);
这样,当他的活动传递给特定的小宠物时,它会加载适当的声音文件。 口袋妖怪是特定小宠物声音文件的名称。 我尝试过使用Uri,但我不确定我是否正确使用它。
我的OnCreate方法如下所示。 谢谢你的时间.~
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Removes the title
requestWindowFeature(Window.FEATURE_NO_TITLE);
//Sets the screen size to full-screen
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.poke_layout);
Bundle getId = getIntent().getExtras();
//get the position integer from MenuActivity
int position = getId.getInt("id");
//Calls the function that initialises all UI items.
initVars();
//Set up variable from JSON field.
getPokes(position);
/**Defines the cry file**/
cry = MediaPlayer.create(this, R.raw.bulbasaur);
pPic.setImageResource(getImage(this, local));
cry.start();
}
编辑: 这样很清楚:我正在从一个JSON文件中将一个pokemons文件名加载到变量'local'中。我的目标是使用此变量然后加载适当的文件
答案 0 :(得分:1)
你可以这样做:
static Map<String, Integer> idReferences = new HashMap<String,Integer>();
static {
idReferences.put("Bulbasaur", R.raw.bulbasaur);
}
MediaPlayer.create(this, idReferences.get("Bulbasaur"));
R
文件中的引用是自动生成的,因此您不希望直接引用它们。最好保留它们的列表或地图并间接引用它们。像上面一样。
如果您想要一个“位置”引用而不是名称,只需使用Integer
代替String
作为地图的关键字。
参考文献: