Reputation: 53
I created a short quiz in Android studio that consists of 4 questions. One question has RadioButtons, the second has CheckBoxes, third has regular Buttons, and the fourth/ fifth are EditText. Whenever I press any button after running it the app crashes and there's a massive error displayed in the logs.
Activity Main:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/Background"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.hende.germanquiz.MainActivity">
<TextView
android:id="@+id/Header_text_view"
style="@style/Header"
android:text="@string/header_text" />
<TextView
android:id="@+id/question_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/questionOne" />
<RadioGroup
android:id="@+id/radio_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/radio1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:checked="true"
android:onClick="Bitte schön"
android:text="@string/wrong1_answer" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:onClick="Ich heiße"
android:text="@string/correct_answer" />
<RadioButton
android:id="@+id/radio3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:onClick="Sprechen sie Deutsch?"
android:text="@string/wrong2_answer" />
<TextView
android:id="@+id/question_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/questionTwo"
android:textColor="#B71C1C" />
<CheckBox
android:id="@+id/checkbox1"
style="@style/Buttons"
android:onClick="rechnung1"
android:text="@string/correct2_answer" />
<CheckBox
android:id="@+id/checkbox2"
style="@style/Buttons"
android:onClick="rechnung2"
android:text="@string/correct3_answer" />
<CheckBox
android:id="@+id/checkbox3"
style="@style/Buttons"
android:onClick="Vogel"
android:text="Hast du einen Vogel?" />
<TextView
android:id="@+id/question_three_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:text="@string/question_three" />
<TextView
android:id="@+id/question_threea_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/question_threea" />
<Button
android:id="@+id/button2"
style="@style/RegularButton"
android:text="@string/wrong4_answer"
android:onClick="button2"/>
<Button
android:id="@+id/button3"
style="@style/RegularButton"
android:text="@string/wrong5_answer"
android:onClick="button3"/>
<Button
android:id="@+id/button1"
style="@style/RegularButton"
android:text="@string/correct4_answer"
android:onClick="button1"/>
<TextView
android:id="@+id/aurora_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/questionFour"
android:layout_marginTop="10dp" />
<EditText
android:id="@+id/edit_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/questionFive"
android:layout_marginTop="10dp"/>
<EditText
android:id="@+id/edit2_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/submit_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/submit_button"
android:onClick="calculateScore"/>
<TextView
android:id="@+id/score_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RadioGroup>
</LinearLayout>
</ScrollView>
MainActivity:
public class MainActivity extends AppCompatActivity {
int score = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void questionOne(){
RadioButton radio2 =(RadioButton)findViewById(R.id.radio2);
if (radio2.isSelected()) {
score = score + 1;
}}
public void questionTwo(){
CheckBox checkbox1 =(CheckBox) findViewById(R.id.checkbox1);
CheckBox checkbox2=(CheckBox) findViewById(R.id.checkbox2);
if(checkbox1.isChecked() &&checkbox2 .isChecked()){
score = score + 1;
}
}
public void questionThree(){
Button button1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
Button button3 = (Button)findViewById(R.id.button3);
if (button1.isSelected()) {
score= score + 1;
}
}
public void questionFour(){
EditText edit_text_view =(EditText) findViewById(R.id.edit_text_view);
if (edit_text_view.getText().toString().contains("Nordlicht") || edit_text_view.getText().toString().contains("Nordlicht")) {
score = score + 1;
}
}
public void questionFive(){
EditText edit2_text_view=(EditText)findViewById(R.id.edit2_text_view);
if (edit2_text_view.getText().toString().contains("On October 10th at 10:10, 10 tame goats pull 10 centners of sugar to the zoo")|| edit2_text_view.getText().toString().contains("On October 10th at 10:10, 10 tame goats pull 10 centners of sugar to the zoo")) {
score = score + 1;
}
}public void calculateScore(View view){
display (score);
questionOne ();
questionTwo ();
questionThree();
questionFour ();
questionFive ();
}
private void display(int number) {
TextView score_text_view = (TextView) findViewById(
R.id.score_text_view);
score_text_view.setText("" + number);
}}
Log error:
08-27 13:07:50.408 3344-3344/com.example.hende.germanquiz E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.hende.germanquiz, PID: 3344
java.lang.IllegalStateException: Could not find method rechnung2(View) in a parent or ancestor Context for
android:onClick attribute defined on view class android.support.v7.widget.AppCompatCheckBox with id 'checkbox2'
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:5609)
at android.widget.CompoundButton.performClick(CompoundButton.java:122)
at android.view.View$PerformClick.run(View.java:22259)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
08-27 12:49:22.499 32531-416/com.example.hende.germanquiz E/InstantRun:
Failed to update existing theme for activity com.example.hende.germanquiz.MainActivity@587f4d8
java.lang.NoSuchFieldException: No field mTheme in class Landroid/content/res/Resources$Theme;
(declaration of 'android.content.res.Resources$Theme' appears in /system/framework/framework.jar)
at java.lang.Class.getDeclaredField(Native Method)
at com.android.tools.fd.runtime.MonkeyPatcher.monkeyPatchExistingResources(MonkeyPatcher.java:374)
at com.android.tools.fd.runtime.Server.restart(Server.java:523)
at com.android.tools.fd.runtime.Server.access$600(Server.java:61)
at com.android.tools.fd.runtime.Server$SocketServerReplyThread.handle(Server.java:318)
at com.android.tools.fd.runtime.Server$SocketServerReplyThread.run(Server.java:190)
at com.android.tools.fd.runtime.Server$SocketServerThread.run(Server.java:158)
at java.lang.Thread.run
08-27 12:49:43.382 32531-32531/com.example.hende.germanquiz E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
08-27 12:49:43.590 32531-32531/com.example.hende.germanquiz E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
Upvotes: 0
Views: 142
Reputation: 7981
The onClick
XML attribute calls a method, you must have that method in your MainActivity
. In addition you have to follow these rules:
The method you declare in the android:onClick attribute must have a
specific signature. Specifically, the method must:
Be public
Return void
Define a View as its only parameter (this will be the View that was clicked)
Upvotes: 2
Reputation: 6663
In your Activity
there is no method named rechnung2
Your logcat says it:
java.lang.IllegalStateException: Could not find method rechnung2(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatCheckBox with id 'checkbox2'
Suggestion : Please check your xml and find all android:onclick
elements then check your Activity
, in your Activity
you must have regarding method.
Also Android Studio
warns you if you don't have that method in your Activity
like that :
Upvotes: 1
Reputation: 541
There is multiple problems here. The first seems to be because you have declared a method named "rechnung2" on the onClick property of the Checkbox but you have never implemented it. On the second error it appears are you using a different theme than the default and may be causing a conflict somewhere along the chain. The last error in the trace may be because you are appending the score onto a blank space in your display method
Upvotes: 2
Reputation: 63
In your xml you define property onClick. That means when you click on that button android will call method named in "onClick" property. Since you dont have those methods defined in you MainActivity, you get runtime error
Upvotes: 2