java - 按下按钮时应用程序崩溃

标签 java android android-studio compiler-errors

我在 Android studio 中创建了一个简短的测验,其中包含 4 个问题。第一个问题有单选按钮,第二个问题有复选框,第三个问题有常规按钮,第四/第五个问题是 EditText。每当我在运行后按任何按钮时,应用程序都会崩溃,并且日志中会显示大量错误。

Activity 主要:

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

主要 Activity :

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

日志错误:

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

最佳答案

在 xml 中定义 onClick 属性。这意味着当您单击该按钮时,android 将调用“onClick”属性中命名的方法。由于您没有在 MainActivity 中定义这些方法,因此您会收到运行时错误

关于java - 按下按钮时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39185801/

相关文章:

java - Android Studio : How do I install Socrata's Soda 2. 0 Java API

java - 滑动加载到 SimpleTarget<Bitmap> 中不遵守指定的宽度和高度

java - 在 repaint() 调用之后,如何知道所有 Java2D 渲染何时完成?

java - 傻眼了 Twilio API 发送简单的短信

java - 尝试生成证书时出现 NPE

android - 在启用混淆器的情况下以 Release模式编译 Android 应用程序时出现问题

java - 将参数化类型实例引用到其原始类型与使用原始类型引用另一个原始类型实例之间的区别?

java - OpenCV 2.4.1 : UnsatisfiedLinkError

Android 2D游戏编程: using OpenGL or not?

java - 找不到ID为 'Android'的插件