title: Resource not found TextView
body: <p>I am taking my first steps in Android and am starting with a very simple app which keeps track of progress through a knitting pattern and shows the instructions for the relevant row.</p>
  
  <p>I want to update a couple of TextView objects programmatically. However, using getViewById() does not seem to identify them properly and the app crashes.</p>
  
  <p>Having searched on Google it seems there are sometimes problems with the XML namespace in the layout XML but mine looks OK. Is it something to do with scope, perhaps?</p>
  
  <p><strong>instructions.java</strong> (this is the only activity)</p>
  
  <pre><code>package uk.co.oketchup.blanketsquare;
  
  import android.app.Activity;
  import android.os.Bundle;
  import android.content.SharedPreferences;
  import android.widget.Button;
  import android.widget.TextView;
  import android.view.View.OnClickListener;
  import android.view.View;
  
  public class instructions extends Activity
  {
      private int mRow;
  
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState)
      {
          super.onCreate(savedInstanceState);
  
          /* retrieve row from shared preferences, or start from zero if nothing there */
          SharedPreferences settings = getPreferences(MODE_PRIVATE);
          mRow = settings.getInt("row",0);
  
          setContentView(R.layout.main);
  
          /* associate onClick listeners with the two buttons */
          final Button btnIncrement = (Button) findViewById(R.id.increment);
          btnIncrement.setOnClickListener(new OnClickListener() {
              public void onClick(View v) {
                  // Increment row
                  ++mRow;
                  calcAndUpdate();
              }
          });
  
          final Button btnDecrement = (Button) findViewById(R.id.decrement);
          btnDecrement.setOnClickListener(new OnClickListener() {
              public void onClick(View v) {
                  // Decrement row
                  --mRow;
                  calcAndUpdate();
              }
          });
      }
  
    private void calcAndUpdate() {
      String Instructions;
      int knit1;
      int knit2;
      int remaining;
  
      if (mRow%2 == 1 )
        {
          /* Odd row */
          knit1 = 40 - mRow;
          Instructions = "K" + knit1;
          remaining = knit1;
        }
        else
        {
          /* Even row */
          knit1 = 18 - mRow/2;
          knit2 = knit1 + 1;
          Instructions = "Sl 1, k" + knit1 + ", [sl 1 kwise] 2 times, k1, p2sso, k" + knit2;
          remaining = knit1 + knit2 + 2;
        }
  
      /* Update the display */
      TextView tRow = (TextView) findViewById(R.id.row);
      TextView tInstr = (TextView) findViewById(R.id.instr);
      TextView tStRem = (TextView) findViewById(R.id.stitchremain);
  
      /* Set the text */
      tRow.setText(mRow);
      tInstr.setText(Instructions);
      tStRem.setText(remaining);
  
    }
  
  }
  </code></pre>
  
  <p>/res/layout/<strong>main.xml</strong></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      &gt;
    &lt;TextView  
        android:id="@+id/row"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Row"
        /&gt;
    &lt;TextView  
        android:id="@+id/instr" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Instructions"
        android:layout_below="@id/row"
        /&gt;
    &lt;Button
        android:id="@+id/increment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="+"
        android:layout_alignParentBottom="true" /&gt;
    &lt;Button
        android:id="@+id/decrement"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"
        android:layout_toRightOf="@id/increment"
        android:layout_alignParentBottom="true" /&gt;
    &lt;TextView  
        android:id="@+id/stitchremain" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="stitches remaining"
        android:layout_above="@id/increment"
        /&gt;
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>The TextView objects seem to have been registered ok as they appear in <strong>R.java</strong></p>
  
  <pre><code>public static final class id {
      public static final int decrement=0x7f050003;
      public static final int increment=0x7f050002;
      public static final int instr=0x7f050001;
      public static final int row=0x7f050000;
      public static final int stitchremain=0x7f050004;
  }
  </code></pre>
  
  <p>Here is the error message shown in ddms.</p>
  
  <pre><code>Uncaught handler: thread main exiting due to uncaught exception
  android.content.res.Resources$NotFoundException: String resource ID #0x1
      at android.content.res.Resources.getText(Resources.java:200)
      at android.widget.TextView.setText(TextView.java:2813)
      at uk.co.oketchup.blanketsquare.instructions.calcAndUpdate(instructions.java:75)
      at uk.co.oketchup.blanketsquare.instructions.access$100(instructions.java:11)
      at uk.co.oketchup.blanketsquare.instructions$1.onClick(instructions.java:33)
  [etc]
  </code></pre>
  
  <p>Many thanks for your help.</p>