猿问

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

在我添加代码来更改背景颜色之前,该应用程序运行良好,因此它必须在那里,但我对 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);

    }

}



侃侃尔雅
浏览 273回答 2
2回答

拉丁的传说

如果您收到此异常:    java.lang.ClassNotFoundException: Didn't find class          "android.view.View$OnUnhandledKeyEventListener"可能的解释是您的 Android API 不匹配。在javadoc中说,该类在API级别28中添加。我怀疑这与您的问题无关,但是如果您发布完整的堆栈跟踪,有人可以更确定地了解这一点。查看ColorChange该类,我可以看到三个单独的错误:如果clickCount是 3,color[clickCount]会给你一个ArrayIndexOutOfBoundsException. 数组索引值从 0 到array.length - 1,在这种情况下数组长度为 3。由于您没有初始化layout变量,它将是null,并且layout.setBackgroundColor(...)会抛出一个NullPointerException.这个语句完全没有作用:   clickCount = clickCount++;(仔细想想。)

BIG阳

你的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
随时随地看视频慕课网APP

相关分类

Python
我要回答