为了账号安全,请及时绑定邮箱和手机立即绑定

应用程序编译良好而不是错误,但随后在按钮单击时中断。可能与背景颜色变化有关

应用程序编译良好而不是错误,但随后在按钮单击时中断。可能与背景颜色变化有关

侃侃尔雅 2021-06-30 10:07:52
在我添加代码来更改背景颜色之前,该应用程序运行良好,因此它必须在那里,但我对 java 和 Android Studio 非常陌生,所以我不确定是什么。该应用程序编译良好,但一旦我单击按钮就会中断。中断我的意思是它在 AVD 上关闭,我收到一个对话框,说应用程序已停止。如果可以的话请帮忙。   package com.example.jacqueline.funfacts;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class FunFactsActivity extends AppCompatActivity {    private FactBook factbook = new FactBook();    private ColorChange colorChange = new ColorChange();    //Declare our view variables    private TextView factTextView;    public Button showFactButton;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_fun_facts);        //Assign the views from the layout file to the corresponding variables        factTextView = findViewById(R.id.factTextView);        showFactButton = findViewById(R.id.showFactButton);        View.OnClickListener factListener = new View.OnClickListener() {            @Override            public void onClick(View v) {                //Get a fact from our FactBook                String fact = factbook.getFact();                //Update the screen with our new fact                factTextView.setText(fact);                //Change the background color                colorChange.setColor();            }        };        showFactButton.setOnClickListener(factListener);    }}
查看完整描述

2 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

如果您收到此异常:

    java.lang.ClassNotFoundException: Didn't find class
         "android.view.View$OnUnhandledKeyEventListener"

可能的解释是您的 Android API 不匹配。在javadoc中说,该类在API级别28中添加。

我怀疑这与您的问题无关,但是如果您发布完整的堆栈跟踪,有人可以更确定地了解这一点。


查看ColorChange该类,我可以看到三个单独的错误:

  1. 如果clickCount是 3,color[clickCount]会给你一个ArrayIndexOutOfBoundsException. 数组索引值从 0 到array.length - 1,在这种情况下数组长度为 3。

  2. 由于您没有初始化layout变量,它将是null,并且layout.setBackgroundColor(...)会抛出一个NullPointerException.

  3. 这个语句完全没有作用:

       clickCount = clickCount++;

    (仔细想想。)


查看完整回答
反对 回复 2021-07-14
?
BIG阳

TA贡献1859条经验 获得超6个赞

你的ColorChange.setColor()方法造成的问题:


if (clickCount > 3){

        clickCount = 0;

}

String newColor = color[clickCount];

如果您连接到您的 android 控制台,它应该说ArrayIndexOutOfBound异常。


假设您的clickCount = 3,然后传递 if ,newColor将从color[3]您的数组范围之外提取。


解决方案: clickCount > 3到clickCount > 2或clickCount >= 3


查看完整回答
反对 回复 2021-07-14
  • 2 回答
  • 0 关注
  • 272 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号