android import ressources from library project android import ressources from library project xml xml

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 the AndroidManifest.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());