gssi
gssi

Reputation: 5087

Indexing through Android string resources

OK, I've got the code to allow me to index through the string resources. Now, how do I get the value of a specific resource item without knowing its name?

Here's the index loop:

Field[] fLst = R.string.class.getFields();

for(Field f : fLst){

  Log.i(dbgTag, "Field Entry: R.string." + f.getName());

}

Thanks for your efforts ...

Upvotes: 2

Views: 834

Answers (1)

CommonsWare
CommonsWare

Reputation: 1007659

First, you know the resource's name. You are even putting it in your Log call. So, one option would be to use getIdentifier() on a Resources object (usually obtained by calling getResources() on your Activity or other Context).

Or, given that you have the Field object, call f.getInt(R.string.class).

In either case (getIdentifier() or getInt()), you now have the numeric identifier of the resource, at which point you can call getString() on your Activity to get the actual String value.

Using reflection -- whether directly or via getIdentifier() -- is going to be slow. Please avoid the approach you are trying where possible. If you absolutely have to use reflection, be sure to cache your results, so you do not need to do the same lookups repeatedly.

Upvotes: 2

Related Questions