Ressource introuvable TextView

Je prends mes premiers pas dans Android et je suis en commençant par un très simple app qui assure le suivi des progrès par le biais d'un modèle de tricot et affiche les instructions de la ligne correspondante.

Je veux mettre à jour un couple de TextView objets par programmation. Cependant, l'utilisation de getViewById() ne semble pas à les identifier correctement et l'application se bloque.

Après avoir cherché sur Google, il semble qu'il y a parfois des problèmes avec l'espace de noms XML dans la mise en page XML, mais le mien semble OK. Est-il quelque chose à voir avec l'étendue, peut-être?

instructions.java (c'est la seule activité)

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);
}
}

/res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView  
android:id="@+id/row"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Row"
/>
<TextView  
android:id="@+id/instr" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Instructions"
android:layout_below="@id/row"
/>
<Button
android:id="@+id/increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:layout_alignParentBottom="true" />
<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" />
<TextView  
android:id="@+id/stitchremain" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="stitches remaining"
android:layout_above="@id/increment"
/>
</RelativeLayout>

Le TextView objets semblent avoir été enregistrés ok tels qu'ils apparaissent dans R.java

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;
}

Voici le message d'erreur indiqué dans ddms.

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]

Merci beaucoup pour votre aide.

InformationsquelleAutor Tom Sutch | 2010-08-30