Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android将字符串名称强制转换为R.drawable.name_Java_Android_Android Resources - Fatal编程技术网

Java Android将字符串名称强制转换为R.drawable.name

Java Android将字符串名称强制转换为R.drawable.name,java,android,android-resources,Java,Android,Android Resources,在我的android应用程序中,我需要在类MyAdapter中创建一个函数,该类在不是MainActivity的活动MyActivity中使用。该函数应具有以下结构 public int getDrawableResourceId(String name) { // naive explanation return R.drawable. + name } 例如,如果调用getDrawableResorceIdtest,它应该返回整数值R.drawable.test。我无法使用

在我的android应用程序中,我需要在类MyAdapter中创建一个函数,该类在不是MainActivity的活动MyActivity中使用。该函数应具有以下结构

public int getDrawableResourceId(String name) {
    // naive explanation
    return R.drawable. + name
}
例如,如果调用getDrawableResorceIdtest,它应该返回整数值R.drawable.test。我无法使用int-drawableResourceId=getResources.getIdentifiername、drawable、getPackageName;因为Android Studio告诉我无法解析getResources和getPackageName方法。如果我用

int drawableResourceId = MyActivity.this
                                   .getResources()
                                   .getIdentifier(name, "drawable", MyActivity.this.getPackageName());


AndroidStudio告诉我活动不是一个封闭类。这就是为什么我要直接将字符串转换为R.drawable.name。

对不起,我编辑了我的答案,脑子里想错了问题:

public static int getDrawable(Context context, String name) {
   return context.getResources().getIdentifier(name, "drawable", context.getPackageName());
}
更新*

因为您在适配器中,所以假设您将MyAdapter作为类名do:

public class MyAdapter{

    private Context mContext;

    public MyAdapter(Context context){
        mContext = context;
    }
....
然后,您可以在下面轻松调用:

getDrawable(mContext, "name")

谢谢您的回答,但是我如何获取上下文呢?因此,如果您在MainActivity中使用getDrawable函数,您只需使用this或MainActivity即可。例如getDrawable this,名称如果在片段中,则可以使用getActivity如果我用getActivity替换函数中的上下文,则仍然无法解析该方法。我想这是因为我在适配器中,而不是在活动中。因此,调用您的MyAdapter就像是新的MyAdapterInactivity.this或MyAdaptergetActivity。非常感谢您的耐心:D.我必须使用MyAdapterMyActivity.this,它就像一个符咒;-。
getDrawable(mContext, "name")