Simple Counter app在启动时崩溃,没有任何错误

时间:2019-01-19 12:07:58

标签: java android crash

背景-我今天早上才开始使用android studio,所以我像草一样绿。

我正在尝试制作一个简单的Counter应用程序,在该应用程序中,它从总数中添加/减去一个,然后显示它。但是由于某种原因,该应用程序在启动时便崩溃了。

这是我的代码-我没有包含另外两个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

2 个答案:

答案 0 :(得分:0)

欢迎来到Android开发世界。

我不确定您是否已将自己介绍给调试Android应用程序,但是在这种情况下,事件日志的输出可能无济于事。 Google确实提供了有关此主题的大量信息,您应该熟悉的第一件事是Android调试器及其在Android Studio中的输出视图。您可能要在这里开始学习:https://developer.android.com/studio/debug/

关于您的问题,我认为您在NullPointerException方法的第5行遇到了经典的setUI(),在其中访问TextView变量counter1时,就像使用相同方法的第1-4行一样,使用findViewById()从布局中检索它。

答案 1 :(得分:0)

您尚未初始化文本视图counter1和counter2。 初始化两个变量,然后对它们调用方法。