Using Android getIdentifier()

后端 未结 3 1812
萌比男神i
萌比男神i 2020-11-27 04:42

I\'ve tried this:

r = Resources.getSystem().getIdentifier(\"ball_red\",\"drawable\",\"com.Juggle2\");
Log.i(\"FindBall\",\"R = \"+r);

And t

相关标签:
3条回答
  • 2020-11-27 04:49

    For Xamarin users I had the issue where I had added an icon with lower and uppercase letters (e.g. iconVaccine.png ) and was referring to the uppercase name iconVaccine.

    Xamarin will allow you to do this (even though you shouldn't), but when the app gets compiled the name are flattened to lower case, so you must refer to the lower case variant as follows:

    Image Name: iconVaccine.png
    
    Xamarin reference: iconVaccine (as created in Resource.designer.cs, but will fail)
    
    Correct Reference: iconvaccine
    

    Hope that helps!

    0 讨论(0)
  • 2020-11-27 04:57

    Since you are inside of an activity it is enough to write

    int resId = YourActivity.this.getResources().getIdentifier(
        "ball_red",
        "drawable",
        YourActivity.this.getPackageName()
    );
    

    or if you're not calling it from an inner class

    int resourceID = getResources().getIdentifier(
        "ball_red",
        "drawable",
        getPackageName()
    );
    

    Note

    getIdentifier() Returns 0 if no such resource was found. (0 is not a valid resource ID.)
    

    Check

    Check also in your R.java whether there is a drawable with the name ball_red

    e.g.:

    public static final class drawable {
            public static final int ball_red = 0x7f020000;
     }
    

    EDIT If you're not in any activity then you must pass a context instead of resources as parameter then do this

    int resId = context.getResources().getIdentifier(
        "ball_red",
        "drawable",
        context.getPackageName()
    );
    
    0 讨论(0)
  • 2020-11-27 04:59

    Though the answer from Festus Tamakloe is correct I found a quirk in this function.

    If you are declaring a string-array in a xml file it must be accessed by calling the base resource type array, using string-array results in anid 0 return.

    0 讨论(0)
提交回复
热议问题