Reputation: 101
I have 3 strings in my strings.xml.
<string name="string1">Hello from string1</string>
<string name="string2">Hello from string2</string>
<string name="string3">Hello from string3</string>
Now, I have a method that I pass a string like "string1" or "string2":
void showStringToast(String sName) {
Toast.makeText(this, getString(R.string.[sName]), Toast.LENGTH_LONG).show();
}
How do I properly reference R.string.sName when sName is being passed as a parameter?
Upvotes: 0
Views: 720
Reputation: 24848
// try this
void showStringToast(String sName) {
Toast.makeText(this, getString(getResources().getIdentifier(sName, "string", getPackageName())), Toast.LENGTH_LONG).show();
}
Upvotes: 2
Reputation: 10959
you can pass parameter to your string using like:
<string name="string1">Hello from %1$s (or $d if you want to pass integer) %2$d (second parameter)</string>
Now pass parameter from getstring method:
getString(R.string.string1,first parameter ,second parameter ...);
see this
Upvotes: 2
Reputation:
I haven't tried this code but I believe you could make use of HashMaps instead.
Declare a static HashMap somewhere, let's say in Constants.java
public static HashMap<String, String> map = new HashMap<String, String>();
then initialize your map. This must be inside a method or constructor
map.put("string1", "Hello from string1");
map.put("string2", "Hello from string2");
map.put("string3", "Hello from string3");
Now you can find your String with something like:
Toast.makeText(this, Constants.map.get(sName).toString(), Toast.LENGTH_LONG).show();
Don't forget to import Constants.java
Upvotes: 1
Reputation: 2182
Try This way:
void showStringToast(int sName) {
Toast.makeText(this, getString(sName), Toast.LENGTH_LONG).show();
}
Upvotes: 0
Reputation: 2180
R.string.something is an integer value that contains a reference to your string. So , R.string.something is like a variable here. Have you ever done such thing that you have generated a variable by appending some string to make it like a variable name and your generated variable name working like a variable ? :)
Instead you can do like this. In your java source file , take your required string values to a String array from your resources. Then use them when necessary. Hope it helps.
Upvotes: 0