Resources$NotFoundException in Graphical Layout ADT preview (but app actually Works)

Viewed 4100

My problem is that loading an array of strings defined in XML works in the app but will result in an error in the ADT Graphical Layout preview.

Now I can't see any graphics in the Graphical Layout because of this error, and it's difficult to work with other graphics. But the view is loading and displaying the strings fine if I build and run my app.

So I suppose my code is correct but either:

  • I am missing some limitations of the Graphical Layout preview and some workaround
  • or perhaps I'm missing something obvious and doing things wrong even if it seems to work in the app

I have a custom view where I get an array defined by me in an array.xml file.

public class ScoreTable extends View {
  [...]
  @Override
  protected void onDraw(Canvas canvas) {
    [...]
    int score_vals[] = getResources().getIntArray(R.array.score_vals);
    [...]
  }
  [...]
}

My array is defined in res/values/array.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="score_vals">
        <item >10</item>
        <item >20</item>
        <item >50</item>
    </array>
</resources>

Graphical Layout is blank and says:

Int array resource ID #0x7f050000
Exception details are logged in Window > Show View > Error Log

But of course I have "public static final int score_vals=0x7f050000;" in R.java!

The details of this error are in a 50-deep stack, but resumes to this:

android.content.res.Resources$NotFoundException: Int array resource ID #0x7f050000
    at android.content.res.Resources.getIntArray(Resources.java:405)
    at com.threecats.poker.ScoreTable.onDraw(ScoreTable.java:53)
    at android.view.View.draw(View.java:6740)
[...]

So, should getResources().getXXXArray() work in the context of a ADT Graphical Layout preview?

I would like to mention that I tried with both "array" and "array-integer" in the XML, and both work in the app but not in the preview. Also I tried to save the Context from the constructor of the view in a private Context member... didn't help either.

2 Answers
Related