simple应用程序崩溃,尽管没有任何更改

hec6srdp  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(413)

我对java和androidstudio都是新手(每种都有1天的经验)。
我正在做一个测试应用程序,你轻敲一个核桃,计数器每次上升一个,非常简单。应用程序运行得非常好,但是,今天早上它停止正常运行,每当我尝试运行它时,应用程序就会停止。
我试过几次,把范围缩小到一条线和一个错误,但我不知道该怎么办。
我知道nullpointerexception是什么,但我不知道在这种情况下如何修复它。由于我对ide和语言还不熟悉,所以对于代码中的任何内容,我也绝对欢迎提出任何建议!
截至目前,该应用程序由2个类组成:
mainactivity.java:

package com.nut.calendar;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity{
    //WIDGETS
    ImageButton nutButton = findViewById(R.id.nutButton);
    TextView nutNum = findViewById(R.id.nutsNum);

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

        nutButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Variables.nutCount += 1;
                nutNum.setText(String.valueOf(Variables.nutCount));
            }
        });
    }

}

变量.java:

package com.nut.calendar;

public class Variables{
    public static int nutCount = 0;
}

错误指向“mainactivity.java”中的第12行:

ImageButton nutButton = findViewById(R.id.nutButton);

logcat中的错误是:
原因:java.lang.nullpointerexception:尝试对空对象引用调用虚拟方法“android.content.pm.applicationinfo android.content.context.getapplicationinfo()”
我真的很感激任何意见!
下面是整个堆栈跟踪:错误

6l7fqoea

6l7fqoea1#

如果你看看android应用程序的生命周期,你就会明白为什么会出现这个错误。当你启动应用程序时,android会在 AppCompatActivity 以一种特殊的方式,你需要打电话 findViewById 之后 setContentView(R.layout.activity_main); 因为它是 setContentView 这就决定了你的命运 views 以及 findViewById 在它找到任何东西之前就需要设置它 view .

相关问题