java - 每次我打开商店 Activity 都会崩溃

标签 java android-studio-2.0

这是我在商店 Activity 类中的代码,每次运行它时,它都会崩溃,我不知道为什么。我只是 Android studio 的初学者,所以我只是尝试制作一个应用程序。

import android.app.Activity;
import andrstrong textoid.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;

import static com.example.dazx15.spaceevasion.R.*;

 public class ShopActivity extends Activity {
 final Button buy1 = (Button) findViewById(id.buy_1);

private int best = 0;
private int coin=0;


@Override
protected void onCreate(Bundle savedInstanceState) {

    buy1.setVisibility(View.INVISIBLE);
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(layout.activity_shop);



}
 //when you click the buy button
public void buySpaceship()
{
    coin=GamePanel.coin;
    if(coin<=500)
    {
        coin=coin - 500;
        buy1.setText("OWNED");
        buy1.setClickable(false);

    }
 }
 public void update() {
    best = GamePanel.best;
    GamePanel.coin=coin;

    //if the score is 500 above
    if (best <= 500) {
        buy1.setVisibility(View.VISIBLE);

      }
    }
  }

最佳答案

更改此行:

final Button buy1 = (Button) findViewById(id.buy_1);

final Button buy1;

您的 onCreate 应该如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(layout.activity_shop);
    buy1 = (Button)findViewById(id.buy_1);
    buy1.setVisibility(View.INVISIBLE);
}

您的应用程序因这一行而崩溃:

final Button buy1 = (Button) findViewById(id.buy_1);

您想初始化按钮吗?但是,该语句在创建 Activity 的新实例时执行(我的意思是在调用构造函数时,而不是调用 onCreate 时)。那时 Activity 中的观点还没有布置出来!这会导致 findViewById 找不到 View ,因此返回 null

现在,在 onCreate 中,您尝试将 buy_1 的可见性设置为不可见。但是,由于 buy_1 为 null,因此无需设置任何内容!因此,会引发空指针异常并且您的应用程序崩溃。

关于java - 每次我打开商店 Activity 都会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39814583/

相关文章:

Android studio 更新 SDK 卡住

Android Studio 2.0 使用 gradle-experimental 插件破坏了 ndk 构建

java - 如何指定一个 JSON 实例由特定的 JSON Schema 定义

java - 可以在 Fortran、C 或 Java 中重新定义像 sin() 这样的函数吗?

安卓 : Gradle computes wrong apk name

android - 如何在不使用 Android Studio 自动运行的情况下在设备上安装应用程序

java - (drawRect) 为什么点击撤销按钮后原点总是有一个点?

java - 允许使用编码包装器在日志记录输出中使用尖括号

java - 无法使用 JMS 连接 Azure 服务总线主题 - Java

Android Studio 2.0 即时运行不起作用但出现此提示?