is it possible to use ressources like strings that are defined in library projects in the application-projects? if so, how? because i cant seem to resolve the strings i would like to resolve like this:
String title = "sample";
int id = ressources.getIdentifier(title, "string", "com.package");
gives me this exception
WARN/ResourceType(278): No package identifier when getting value for resource number 0x00000000 WARN/System.err(278): android.content.res.Resources$NotFoundException: String resource ID #0x0
the string ("sample") i am looking for is definitely in this package provided in the strings.xml of the library project. i can even see it in the R.java
So it looks like
int id = ressources.getIdentifier(title, "string", "com.package");
is returning 0
, meaning it can't find the specified resource. The subsequent call to ressources.getIdentifer()
causes the exception, since 0
is not a valid resource id.
Here are some debug/alternative ideas:
You've probably already done this a dozen times, but it doesn't hurt mentioning: first recheck spelling of everything:
uses-library
element the AndroidManifest.xml
,title
) or is it specific to that type of resource(strings)? Can you access the resources of another library?Android - Is it possible to create a custom library to use across several applications?
Code
String fullyQualifiedResourceName = "com.package:string/sample";
int id = ressources.getIdentifier(title, null, null);
if (id == 0) {
Log.e(TAG, "Lookup id for resource '"+fullyQualifiedResourceName+"' failed";
// graceful error handling code here
}
Code
final String resourceName= "sample";
final int id;
try {
final Class resourceType = com.package.R.string.class;
final Field field = resourceType.getField(title);
id = field.getInt(null);
} catch (final Exception e) {
Log.e(TAG, "Lookup id for resource '"+resourceName+"' failed";
// graceful error handling code here
}
Android, getting resource ID from string?
http://daniel-codes.blogspot.com/2009/12/dynamically-retrieving-resources-in.html
In your project code, import the R class:
import com.application.libraryproject.R
Then you can reference any string or other xml-defined resource like this:
String mystring = getString(R.string.app_name);
or similar.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With