android import ressources from library project
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:
- package spelling is correct (both in library project and in client project),
- resource string is correct (library project and client project),
- is library spelling correct in the
uses-library
element theAndroidManifest.xml
, - etc.
- Can you access any resources in that library or is the problem specific to that resource (
title
) or is it specific to that type of resource(strings)? Can you access the resources of another library?
- Are you accessing the library as a jar file? You can jar the code, but you can't access resources from a jar.
Android - Is it possible to create a custom library to use across several applications?
- Did you try the alternate name format:
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}
- You could try using reflection:
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.
I had a similar issue and I solved it with the getPackageName()
method within the Project Library.
In your case, it should be:
String title = "sample";int id = ressources.getIdentifier(title, "string", getPackageName());