如果我知道资源的名称,则返回资源的id

And*_*eev 15 c# mono xamarin.android mvvmcross

如果我知道资源的名称,我怎么能返回资源的id?

像这样的东西:

String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
Run Code Online (Sandbox Code Playgroud)

Stu*_*art 31

在MonoDroid中,该代码转换为:

 var resourceId = Resources.GetIdentifier(mDrawableName.ToLower(), "drawable", PackageName);
Run Code Online (Sandbox Code Playgroud)

但是,我个人不使用GetIdentifier,因为它在Android中不推荐 - 所以我使用Reflection代替:

 var resourceId = (int)typeof(Resource.Drawable).GetField(mDrawable).GetValue(null);
Run Code Online (Sandbox Code Playgroud)

虽然该代码肯定应该为任意字符串添加一些try/catch错误检查!