0

I am a newbie trying to create a simple quiz app in Android Studio. Things were progressing reasonably well until I tried to create an onClick event for a radiogroup.

I took a look at this previously answered question: java.lang.IllegalStateException: Could not execute method for android:onClick Android App but the solution did not shed any light on my issue.

Another thing I noticed was a problem with the imported AppCompatViewInflater.java WHICH 'cannot resolve symbol 'R''?

Any advice would much appreciated.

This is the logcat error message that I see:

02-05 09:19:16.989 29473-29473/com.example.hughdavidson_quizapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.hughdavidson_quizapp, PID: 29473
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:414)
        at android.view.View.performClick(View.java:5205)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992)
        at android.view.View$PerformClick.run(View.java:21164)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409)
        at android.view.View.performClick(View.java:5205) 
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992) 
        at android.view.View$PerformClick.run(View.java:21164) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f0c0004


This is the MainActivity.java code

///


public class MainActivity extends AppCompatActivity {
    RadioGroup  radioGroupQ1;
    ImageView q1ImageView;

    TextView textViewQ2;
    ImageView q2ImageView;

    CheckBox checkBoxQ3_i, checkBoxQ3_ii, checkBoxQ3_iii, checkBoxQ3_iv, checkBoxQ3_v;
    ImageView q3_i_ImageView, q3_ii_ImageView, q3_iii_ImageView, q3_iv_ImageView, q3_v_ImageView;

    boolean hasCheckBoxQ3_i = false;
    boolean hasCheckBoxQ3_ii = false;
    boolean hasCheckBoxQ3_iii = false;
    boolean hasCheckBoxQ3_iv = false;
    boolean hasCheckBoxQ3_v = false;

    EditText editTextQ4_i_Answer, editTextQ4_ii_Answer, editTextQ4_iii_Answer, editTextQ4_iv_Answer;
    ImageView q4_i_ImageView, q4_ii_ImageView, q4_iii_ImageView, q4_iv_ImageView;

    int userScore = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Ref for working with radiogroups: https://stackoverflow.com/questions/9748070/radio-group-onclick-event-not-firing-how-do-i-tell-which-is-selected
        radioGroupQ1 = (RadioGroup) findViewById(R.id.q1_radio_buttons);
        radioGroupQ1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch(checkedId){
                    case R.id.q1_radioButton_false:
                        userScore += + 0;
                        q1ImageView.setImageResource(R.mipmap.red_cross);
                        break;
                    case R.id.q1_radioButton_true:
                        userScore += + 1;
                        q1ImageView.setImageResource(R.mipmap.green_tick);
                        break;
                }
            }
        });

        textViewQ2 = (TextView) findViewById(R.id.q2_editText);

        checkBoxQ3_i = (CheckBox) findViewById(R.id.checkBoxQ3_i) ;
        checkBoxQ3_ii = (CheckBox) findViewById(R.id.checkBoxQ3_ii) ;
        checkBoxQ3_iii = (CheckBox) findViewById(R.id.checkBoxQ3_iii) ;
        checkBoxQ3_iv = (CheckBox) findViewById(R.id.checkBoxQ3_iv) ;
        checkBoxQ3_v = (CheckBox) findViewById(R.id.checkBoxQ3_v) ;

        editTextQ4_i_Answer = (EditText) findViewById(R.id.q4_i_editBox);
        editTextQ4_ii_Answer = (EditText) findViewById(R.id.q4_ii_editBox);
        editTextQ4_iii_Answer = (EditText) findViewById(R.id.q4_iii_editBox);
        editTextQ4_iv_Answer = (EditText) findViewById(R.id.q4_iv_editBox);

        q1ImageView = (ImageView) findViewById(R.id.q1_redcross_image_view);
        q2ImageView = (ImageView) findViewById(R.id.q2_redgreencheck_image_view);
        q3_i_ImageView = (ImageView) findViewById(R.id.q3_i_greencheck_image_view);
        q3_ii_ImageView = (ImageView) findViewById(R.id.q3_ii_greencheck_image_view);
        q3_iii_ImageView = (ImageView) findViewById(R.id.q3_iii_redcheck_image_view);
        q3_iv_ImageView = (ImageView) findViewById(R.id.q3_iv_greencheck_image_view);
        q3_v_ImageView = (ImageView) findViewById(R.id.q3_v_greencheck_image_view);
        q4_i_ImageView = (ImageView) findViewById(R.id.q4_i_redgreencheck_image_view);
        q4_ii_ImageView = (ImageView) findViewById(R.id.q4_ii_redgreencheck_image_view);
        q4_iii_ImageView = (ImageView) findViewById(R.id.q4_iii_redgreencheck_image_view);
        q4_iv_ImageView = (ImageView) findViewById(R.id.q4_iv_redgreencheck_image_view);

    }

    //Show users total score
    public void showScore(View view){
        //Check score for question 1

        //Check score for question 2
        String q2Answer = "1000000";
        if (textViewQ2.getText().toString().equals(q2Answer)){
            userScore = userScore + 1;
            q2ImageView.setImageResource(R.mipmap.green_tick);
        }
        else q2ImageView.setImageResource(R.mipmap.red_cross);

        //check score for question 3
        //has Q3-i been ticked
        hasCheckBoxQ3_i = checkBoxQ3_i.isChecked();
        //has Q3-ii been ticked
        hasCheckBoxQ3_ii = checkBoxQ3_ii.isChecked();
        //has Q3-iii been ticked
        hasCheckBoxQ3_iii = checkBoxQ3_iii.isChecked();
        //has Q3-iv been ticked
        hasCheckBoxQ3_iv = checkBoxQ3_iv.isChecked();
        //has Q3-v been ticked
        hasCheckBoxQ3_v = checkBoxQ3_i.isChecked();

        if(hasCheckBoxQ3_i){
            userScore += +1;
            q3_i_ImageView.setImageResource(R.mipmap.green_tick);
        }
        if(hasCheckBoxQ3_ii){
            userScore += +1;
            q3_ii_ImageView.setImageResource(R.mipmap.green_tick);
        }
        if(hasCheckBoxQ3_iii){
            userScore += +1;
            q3_iii_ImageView.setImageResource(R.mipmap.green_tick);
        }
        if(hasCheckBoxQ3_iv){
            userScore += +1;
            q3_iv_ImageView.setImageResource(R.mipmap.green_tick);
        }
        if(hasCheckBoxQ3_v){
            userScore += +0;
            q3_v_ImageView.setImageResource(R.mipmap.red_cross);
        }

        //Check score for Q4
        //Reference: string comparison https://stackoverflow.com/questions/16143562/string-comparison-android/16143606#:~:text=The%20%3D%3D%20operator%20checks%20to,to%20compare%20strings%20for%20equality.
        String Q4_i = "E";
        String Q4_ii = "A";
        String Q4_iii = "C";
        String Q4_iv = "B";

        if(editTextQ4_i_Answer.getText().toString().equals(Q4_i)){
            userScore += +1;
            q4_i_ImageView.setImageResource(R.mipmap.green_tick);
        }
        else q4_i_ImageView.setImageResource(R.mipmap.red_cross);

        if(editTextQ4_ii_Answer.getText().toString().equals(Q4_ii)){
            userScore += +1;
            q4_ii_ImageView.setImageResource(R.mipmap.green_tick);
        }
        else q4_ii_ImageView.setImageResource(R.mipmap.red_cross);

        if(editTextQ4_iii_Answer.getText().toString().equals(Q4_iii)){
            userScore += +1;
            q4_iii_ImageView.setImageResource(R.mipmap.green_tick);
        }
        else q4_iii_ImageView.setImageResource(R.mipmap.red_cross);

        if(editTextQ4_iv_Answer.getText().toString().equals(Q4_iv)){
            userScore += +1;
            q4_iv_ImageView.setImageResource(R.mipmap.green_tick);
        }
        else q4_iv_ImageView.setImageResource(R.mipmap.red_cross);
        
        //  Toast message to user with score
        Context context = getApplicationContext();
        CharSequence text = "You scored: " + userScore + " out of 11";
        int duration = Toast.LENGTH_SHORT;

        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
    }

...
}
///

and this is the XML:
///
<?xml version="1.0" encoding="utf-8"?>

<ScrollView 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">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        tools:context=".MainActivity">

        <TextView
            android:id="@+id/q1"
            style="@style/QuestionLabel"
            android:text="@string/q1" />

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"/>

        <TextView
            android:id="@+id/q1_text"
            style="@style/QuestionText"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="@string/q1_text"/>

        <RadioGroup
            android:id="@+id/q1_radio_buttons"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
             android:orientation="horizontal"
            app:layout_constraintEnd_toStartOf="@+id/guideline5"
            app:layout_constraintStart_toStartOf="@+id/guideline"
            app:layout_constraintTop_toBottomOf="@+id/q1_text">

            <RadioButton
                android:id="@+id/q1_radioButton_false"

                android:text="@string/q1_radio_button_false"/>

            <RadioButton
                android:id="@+id/q1_radioButton_true"

                android:text="@string/q1_radio_button_true"/>
        </RadioGroup>


        <TextView
            android:id="@+id/q2"
            style="@style/QuestionLabel"
            android:text="@string/q2"/>

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_begin="100dp" />

        <TextView
            android:id="@+id/q2_text"
            style="@style/QuestionText"
            android:text="@string/q2_text" />

        <EditText
            android:id="@+id/q2_editText"

            android:hint="@string/user_hint"
            android:importantForAutofill="no"
            android:inputType="number|text" />
   
        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_begin="176dp" />

        <TextView
            android:id="@+id/q3"
            style="@style/QuestionLabel"
            android:text="@string/q3" />

        <TextView
            android:id="@+id/q3_text"
            style="@style/QuestionText"

            android:text="@string/q3_text" />

        <CheckBox
            android:id="@+id/checkBoxQ3_i"
            style="@style/CheckBox"
            android:checked="false"
            android:text="@string/q3_i" />


        <CheckBox
            android:id="@+id/checkBoxQ3_ii"
            style="@style/CheckBox"
            android:checked="false"
            android:text="@string/q3_ii" />
    
        <CheckBox
            android:id="@+id/checkBoxQ3_iii"
            style="@style/CheckBox"
            android:checked="false"
            android:text="@string/q3_iii" />


        <CheckBox
            android:id="@+id/checkBoxQ3_iv"
            style="@style/CheckBox"/>
    
        <CheckBox
            android:id="@+id/checkBoxQ3_v"
            style="@style/CheckBox"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginEnd="70dp"
            android:layout_marginRight="70dp"
            android:checked="false"
            android:text="@string/q3_v" />
           
        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_begin="180dp" />

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_begin="326dp" />

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_begin="316dp" />

        <TextView
            android:id="@+id/q4"
            style="@style/QuestionLabel"
            android:text="@string/q4"
            app:layout_constraintEnd_toStartOf="@+id/guideline"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@+id/guideline6" />

        <ImageView
            android:id="@+id/q4_imageView3"
            android:layout_width="0dp"
            android:layout_height="189dp"
            android:contentDescription="@string/red_cross"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/guideline"
            app:layout_constraintTop_toBottomOf="@id/guideline6"
            app:srcCompat="@mipmap/motion_time_graph" />

        <TextView
            android:id="@+id/q4_text"
            style="@style/QuestionText"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="@string/q4_text"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="@+id/guideline"
            app:layout_constraintTop_toBottomOf="@+id/q4_imageView3" />

        <TextView
            android:id="@+id/q4_i_text"
            style="@style/QuestionText"
            android:layout_width="287dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="@string/q4_i"
            app:layout_constraintEnd_toStartOf="@+id/guideline5"
            app:layout_constraintStart_toStartOf="@+id/guideline"
            app:layout_constraintTop_toBottomOf="@+id/q4_text" />

        <EditText
            android:id="@+id/q4_i_editBox"
            style="@style/Q4EditTextBox"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/guideline5"
            app:layout_constraintTop_toBottomOf="@+id/q4_text"
            app:layout_constraintTop_toTopOf="@+id/q4_i_text" />


        <TextView
            android:id="@+id/q4_ii_text"
            style="@style/QuestionText"
            android:layout_width="291dp"
            android:layout_height="36dp"
            android:layout_marginTop="10dp"
            android:text="@string/q4_ii"
            app:layout_constraintEnd_toStartOf="@+id/guideline5"
            app:layout_constraintHorizontal_bias="0.612"
            app:layout_constraintStart_toStartOf="@+id/guideline"
            app:layout_constraintTop_toBottomOf="@+id/q4_i_text" />

        <EditText
            android:id="@+id/q4_ii_editBox"
            style="@style/Q4EditTextBox"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/guideline5"
            app:layout_constraintTop_toTopOf="@+id/q4_ii_text" />

        <TextView
            android:id="@+id/q4_iii_text"
            style="@style/QuestionText"
            android:layout_width="287dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="@string/q4_iii"
            app:layout_constraintEnd_toStartOf="@+id/guideline5"
            app:layout_constraintHorizontal_bias="0.612"
            app:layout_constraintStart_toStartOf="@+id/guideline"
            app:layout_constraintTop_toBottomOf="@+id/q4_ii_text" />

        <EditText
            android:id="@+id/q4_iii_editBox"
            style="@style/Q4EditTextBox"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/guideline5"
            app:layout_constraintTop_toTopOf="@+id/q4_iii_text" />


        <TextView
            android:id="@+id/q4_iv_text"
            style="@style/QuestionText"
            android:layout_width="287dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="@string/q4_iv"
            app:layout_constraintEnd_toStartOf="@+id/guideline5"
            app:layout_constraintHorizontal_bias="0.612"
            app:layout_constraintStart_toStartOf="@+id/guideline"
            app:layout_constraintTop_toBottomOf="@+id/q4_iii_text" />

        <EditText
            android:id="@+id/q4_iv_editBox"
            style="@style/Q4EditTextBox"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="@+id/guideline5"
            app:layout_constraintTop_toTopOf="@+id/q4_iv_text" />


        <Button
            android:id="@+id/reset"
            style="@style/SubmitResetButton"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:text="@string/reset"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/guideline4"
            app:layout_constraintStart_toStartOf="@+id/guideline"
            app:layout_constraintTop_toBottomOf="@+id/guideline7"
            app:layout_constraintVertical_bias="0.0"
            android:onClick="resetAnswers"/>

        <Button
            android:id="@+id/submit"
            style="@style/SubmitResetButton"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:text="@string/submit"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/guideline5"
            app:layout_constraintStart_toStartOf="@+id/guideline4"
            app:layout_constraintTop_toBottomOf="@+id/guideline7"
            app:layout_constraintVertical_bias="0.0"
            android:onClick="showScore"/>

        <androidx.constraintlayout.widget.Guideline
            android:id="@+id/guideline7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_begin="734dp" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
///
Dave
  • 15
  • 4

1 Answers1

0

Button onClick and RadioGroup onClick are not the same. Please use this:

       myradioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                
            }
        });
Binozo
  • 145
  • 2
  • 10