This question already has an answer here:
- android.content.res.Resources$NotFoundException: String resource ID #0x0 5 answers
QUESTION:
Why is my app crashing whenever I try to use the setText() method to assign random Numbers as my Buttons' text?
My Goal is to set random numbers to the buttons and if the user clicks the button with the larger number, he/she is awarded a point.
I debugged the program and found the logic to be working correctly. However the app keeps crashing at startup and I don't know what exactly is the underlying problem.
MAIN ACTIVITY:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private static int points, rand1, rand2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
points =0;
randomize();
}
public void onLeftClick(View view) {
if(rand1 > rand2)
points++;
else
points--;
TextView text = (TextView) findViewById(R.id.pointText);
text.setText("Points : "+points);
randomize();
}
public void onRightClick(View view) {
if(rand2 > rand1)
points++;
else
points--;
TextView text = (TextView) findViewById(R.id.pointText);
text.setText("Points : "+points);
randomize();
}
private void randomize() {
Random random = new Random();
rand1= random.nextInt(10);
rand2 = 0;
while (true) {
rand2 = random.nextInt(10);
if (rand1 != rand2)
break;
}
Button leftButton = (Button)findViewById(R.id.leftButton);
leftButton.setText((char)rand1); **ERROR HERE**
Button rightButton = (Button)findViewById(R.id.rightButton);
rightButton.setText((char)rand2);
}
}
XML FILE:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.clickgame.MainActivity">
<TextView
android:layout_width="119dp"
android:layout_height="24dp"
android:text="CLICK GAME"
android:textAlignment="center"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.032"
tools:layout_constraintRight_creator="1"
tools:layout_constraintLeft_creator="1" />
<Button
android:id="@+id/leftButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="215dp"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="216dp"
android:onClick="onLeftClick"
android:text="0"
app:layout_constraintBottom_toTopOf="@+id/pointText"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:layout_constraintBottom_creator="1"
tools:layout_constraintLeft_creator="1"
tools:layout_constraintTop_creator="1" />
<Button
android:id="@+id/rightButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="215dp"
android:layout_marginEnd="18dp"
android:layout_marginRight="18dp"
android:layout_marginTop="216dp"
android:onClick="onRightClick"
android:text="0"
app:layout_constraintBottom_toTopOf="@+id/pointText"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:layout_constraintBottom_creator="1"
tools:layout_constraintRight_creator="1"
tools:layout_constraintTop_creator="1" />
<TextView
android:id="@+id/pointText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="POINTS : 0"
android:textStyle="bold"
tools:layout_constraintRight_creator="1"
tools:layout_constraintBottom_creator="1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
tools:layout_constraintLeft_creator="1"
android:layout_marginBottom="16dp"
app:layout_constraintLeft_toLeftOf="parent" />
</android.support.constraint.ConstraintLayout>
ERROR LOG:
09-10 14:51:53.742 478-478/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.clickgame, PID: 478
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.clickgame/com.example.clickgame.MainActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x6
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x6
at android.content.res.Resources.getText(Resources.java:335)
at android.widget.TextView.setText(TextView.java:4555)
at com.example.clickgame.MainActivity.randomize(MainActivity.java:66) //THIS LINE
at com.example.clickgame.MainActivity.onCreate(MainActivity.java:22) //THIS LINE
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)