Java Android:ArrayList返回int值的资源标识符
我试图将一些mp3文件的资源标识符存储在一个数组中。 这是代码Java Android:ArrayList返回int值的资源标识符,java,android,arrays,android-resources,Java,Android,Arrays,Android Resources,我试图将一些mp3文件的资源标识符存储在一个数组中。 这是代码 private HashMap<String,List<Integer>> listHashMapnum; private List<String> listhead; listhead.add("Forty"); listhead.add("Fifty"); ArrayList<Integer> fortysound = new Arra
private HashMap<String,List<Integer>> listHashMapnum;
private List<String> listhead;
listhead.add("Forty");
listhead.add("Fifty");
ArrayList<Integer> fortysound = new ArrayList<>();
fortysound.add(R.raw.forty);
ArrayList<Integer> fiftysound = new ArrayList<>();
fiftysound.add(R.raw.fifty);
然后我使用一个函数来获取hashmap中的值
public Integer getChild2(int i, int i1) {
return listHashMapnum.get(listheader.get(i)).get(i1);
}
我从这样的函数中得到值
Integer childsound = (Integer) getChild2(i, i1);
然后我使用childsound变量初始化mediaplayer
Button bt;
bt = (Button) view.findViewById(R.id.speaker);
final MediaPlayer mp = MediaPlayer.create(context, childsound);
bt.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
mp.start();
}
});
但函数返回一个int值,如“213736282”。我在调试时发现了这一点。
但我不明白它为什么这样做,以及我可以做些什么来从函数中获取资源标识符。
非常感谢您的帮助。
多谢各位
编辑:
错误实际上在代码的另一部分,因此上面的代码是正确的。谢谢你是的,你说得对。Android资源标识符是在R.java中生成和存储的整数值 您可以使用方法并读取资源
检查此项以从原始资源读取mp3请查看此处使用的所有变量的声明,这样我们就知道了它们的类型。您确实了解了。是什么让你觉得有问题?@Oleg,因为应用程序一直在崩溃,当我尝试调试时,我发现childsound变量的int值看起来是“213585932”,你在用
childsound
做什么?问题可能就在那里。
Button bt;
bt = (Button) view.findViewById(R.id.speaker);
final MediaPlayer mp = MediaPlayer.create(context, childsound);
bt.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
mp.start();
}
});