繁体   English   中英

致命异常(java.lang.IllegalStateException)

[英]Fatal exception (java.lang.IllegalStateException)

我一直在尝试寻找答案,但我唯一了解的是我的代码第22行有问题,但我不知道为什么。 我敢肯定这是愚蠢的,但是我昨天开始写android的代码,所以请原谅我!

我的代码是:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.Toast;

public class Benvenuto extends AppCompatActivity {

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



public void entra(View view) {
    Intent entra1 = new Intent(this, domande1.class);
    boolean checked = ((CheckBox) view).isChecked();

    switch (view.getId()) {
        case R.id.condizioni:
            if (checked)
                startActivity(entra1);
            else
                Toast.makeText(this, "Devi approvare termini e condizioni prima di procedere!", Toast.LENGTH_SHORT).show();
            break;
    }

}
}

因此,基本上,用户必须同意条款和条件。 如果他同意,很好,他将跳到下一个活动。 如果没有,则会出现烤面包!

但是,当我按下按钮时,应用程序崩溃了(在添加复选框之前,它工作正常)。

我得到的错误是

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.suspicio.turboscuse, PID: 547
              java.lang.IllegalStateException: Could not execute method for android:onClick
                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                  at android.view.View.performClick(View.java:5201)
                  at android.view.View$PerformClick.run(View.java:21209)
                  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:5525)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
               Caused by: java.lang.reflect.InvocationTargetException
                  at java.lang.reflect.Method.invoke(Native Method)
                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                  at android.view.View.performClick(View.java:5201) 
                  at android.view.View$PerformClick.run(View.java:21209) 
                  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:5525) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 
               Caused by: java.lang.ClassCastException: android.support.v7.widget.AppCompatButton cannot be cast to android.widget.CheckBox
                  at com.suspicio.turboscuse.Benvenuto.entra(Benvenuto.java:22)
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                  at android.view.View.performClick(View.java:5201) 
                  at android.view.View$PerformClick.run(View.java:21209) 
                  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:5525) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 

你能帮我吗?

问题在于view变量不是CheckBox而是AppCompatButton

您可以将支票更改为以下形式:

if(view instanceof CheckBox){
   // The checkbox was pressed
   if(((CheckBox) view).isChecked()){
      // The checkbox is checked
      startActivity(entra1);
   }else{
     // The checkbox is not checked
     Toast.makeText(this, "Devi approvare termini e condizioni prima di procedere!", Toast.LENGTH_SHORT).show();
   }
}else{
    // The button was pressed
}

尝试这个:

public void itemClicked(View v) {
  CheckBox checkBox = (CheckBox) v;
  if(checkBox.isChecked())
     startActivity(entra1);
  else
     Toast.makeText(this, "Devi approvare termini e condizioni prima di procedere!", Toast.LENGTH_SHORT).show();
}

在xml中:

<CheckBox
   android:id="@+id/check_box"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:onClick="itemClicked" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM