这是我在商店 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/