简单的计数器应用程序在启动时崩溃,没有任何错误
Simple Counter app crashing on start up without any error
背景 - 我今天早上才开始使用 android studio,所以我绿得像草。
我正在尝试制作一个简单的计数器应用程序,它从总数中 adds/subtract 一个,然后显示它。但是由于某种原因,该应用程序在启动时崩溃了。
这是我的代码 - 还有几个我没有包含的 OnClickListener 方法,但它们都是相同的代码。
提前致谢。
public class MainActivity extends AppCompatActivity {
Button counter1Up, counter1Down, counter2Down, counter2Up;
TextView counter1, counter2;
double lifeTotal1 = 20, lifeTotal2 = 20;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUI();
counter1Up.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lifeTotal1 = Double.parseDouble(counter1.getText().toString());
counter1.setText(String.valueOf(lifeTotal1 + 1));
}
});
counter2Up.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lifeTotal2 = Double.parseDouble(counter2.getText().toString());
counter2.setText(String.valueOf(lifeTotal2 + 1));
}
});
counter1Down.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lifeTotal1 = Double.parseDouble(counter1.getText().toString());
counter1.setText(String.valueOf(lifeTotal1 - 1));
}
});
public void setUI(){
counter1Up = findViewById(R.id.counter2UpButton);
counter1Down = findViewById(R.id.Counter1DownButton);
counter2Up = findViewById(R.id.counter2UpButton);
counter2Down = findViewById(R.id.counter2DownButton);
counter1.setText("20");
counter2.setText("20");
}
}
事件日志显示如下:
1/19/2019
3:29 AM Gradle sync started
3:29 AM Project setup started
3:29 AM Gradle sync finished in 2 s 979 ms
3:29 AM Syncing only active variant
You can disable this experimental feature from
File → Settings → Experimental → Gradle → Only sync the active variant
3:29 AM Executing tasks: [:app:generateDebugSources]
3:29 AM Gradle build finished in 780 ms
3:51 AM Executing tasks: [:app:assembleDebug]
3:52 AM Gradle build finished in 13 s 75 ms
欢迎来到 Android 发展的世界。
我不确定您是否已经介绍过如何调试 Android 应用程序,但事件日志的输出在这种情况下可能无济于事。 Google 确实提供了大量关于此主题的信息,您首先应该熟悉的是 Android 调试器及其在 Android Studio 中的输出视图。您可能想从这里开始学习:https://developer.android.com/studio/debug/
关于您的问题,我认为您已经 运行 在 setUI()
方法的第 5 行访问 TextView
变量的经典 NullPointerException
counter1
而不是使用 findViewById()
从布局中检索它,就像在相同方法的第 1-4 行中一样。
您还没有初始化文本视图 counter1 和 counter2。
在对它们调用方法之前初始化这两个变量。
背景 - 我今天早上才开始使用 android studio,所以我绿得像草。
我正在尝试制作一个简单的计数器应用程序,它从总数中 adds/subtract 一个,然后显示它。但是由于某种原因,该应用程序在启动时崩溃了。
这是我的代码 - 还有几个我没有包含的 OnClickListener 方法,但它们都是相同的代码。
提前致谢。
public class MainActivity extends AppCompatActivity {
Button counter1Up, counter1Down, counter2Down, counter2Up;
TextView counter1, counter2;
double lifeTotal1 = 20, lifeTotal2 = 20;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUI();
counter1Up.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lifeTotal1 = Double.parseDouble(counter1.getText().toString());
counter1.setText(String.valueOf(lifeTotal1 + 1));
}
});
counter2Up.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lifeTotal2 = Double.parseDouble(counter2.getText().toString());
counter2.setText(String.valueOf(lifeTotal2 + 1));
}
});
counter1Down.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lifeTotal1 = Double.parseDouble(counter1.getText().toString());
counter1.setText(String.valueOf(lifeTotal1 - 1));
}
});
public void setUI(){
counter1Up = findViewById(R.id.counter2UpButton);
counter1Down = findViewById(R.id.Counter1DownButton);
counter2Up = findViewById(R.id.counter2UpButton);
counter2Down = findViewById(R.id.counter2DownButton);
counter1.setText("20");
counter2.setText("20");
}
}
事件日志显示如下:
1/19/2019
3:29 AM Gradle sync started
3:29 AM Project setup started
3:29 AM Gradle sync finished in 2 s 979 ms
3:29 AM Syncing only active variant
You can disable this experimental feature from
File → Settings → Experimental → Gradle → Only sync the active variant
3:29 AM Executing tasks: [:app:generateDebugSources]
3:29 AM Gradle build finished in 780 ms
3:51 AM Executing tasks: [:app:assembleDebug]
3:52 AM Gradle build finished in 13 s 75 ms
欢迎来到 Android 发展的世界。
我不确定您是否已经介绍过如何调试 Android 应用程序,但事件日志的输出在这种情况下可能无济于事。 Google 确实提供了大量关于此主题的信息,您首先应该熟悉的是 Android 调试器及其在 Android Studio 中的输出视图。您可能想从这里开始学习:https://developer.android.com/studio/debug/
关于您的问题,我认为您已经 运行 在 setUI()
方法的第 5 行访问 TextView
变量的经典 NullPointerException
counter1
而不是使用 findViewById()
从布局中检索它,就像在相同方法的第 1-4 行中一样。
您还没有初始化文本视图 counter1 和 counter2。 在对它们调用方法之前初始化这两个变量。