Access a resource name programmatically

前端 未结 2 1445
你的背包
你的背包 2020-12-06 17:29

I have many string arrays in my resource files, and I want to access them programmatically depending on user input.

int c = Getter.getCurrentNumber();
Strin         


        
相关标签:
2条回答
  • 2020-12-06 17:48

    You can get the resource id like so

    int c = Getter.getCurrentNumber();
    String resource = "n_" + c;
    int id = getResources().getIdentifier(resource, "array", "com.your.project");
    

    Then just use that id

    String[] info = getResources().getStringArray(id);
    

    Have a look here for another example on getResources().getIdentifier().

    0 讨论(0)
  • 2020-12-06 17:57

    If you want to get a resource by name (programmatically) and you are not sure how to address the resource by name (but you do know how to access it by R.), you can do this:

    • First print the exact resource name, like this:

    Log.d("", context.getResources().getResourceName(R.id.whichYouAlreadyKnow) );

    (Note: R.id.whichYouAlreadyKnow can be R.string.* R.drawable.* etc...)
    Now you know the exact Resource address name

    • Take the printed name and use it as is, like this:

    int id = getResources().getIdentifier(resource_name_that_printed_above, null, null);

    Cheers

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