gpt4 book ai didi

java - Android(Java)枚举空指针错误

转载 作者:搜寻专家 更新时间:2023-11-01 08:02:52 24 4
gpt4 key购买 nike

我冒险尝试在 switch case 中使用 Enum。但显然,我做错了什么。

这是我定义枚举的代码:

public class WorkoutStopwatch extends Activity implements OnClickListener {

private boolean timer_running = false;
public enum CounterState {
WORKOUT, REST
}
CounterState state;

以及我使用它的覆盖的 onClick 方法:

    @Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.start_button:
timer_running = true;
// Make call to timer update class to start
break;
case R.id.stop_button:
timer_running = false;
// Make call to timer update class to stop
break;
case R.id.reset_button:

if (!timer_running) {
switch(state) {
case WORKOUT:
// TODO: Reset the counter to the workout time
break;
case REST:
// TODO: Reset the counter to the rest time
break;
}
}
break;
}
}

当我运行我的程序时,对“开始”和“停止”按钮的 onClick 调用工作得很好,但“重置”按钮会导致应用程序崩溃,并出现针对该行的“致命异常:main”和“java.lang.NullPointerException”错误的开关。从我一直在阅读的内容来看,在读取开关时枚举的值似乎可能为空,因此我将我的枚举声明更改为:

    private enum CounterState {
UNKNOWN(0),
WORKOUT(1),
REST(2);

private int stateValue;

CounterState(int state) {
this.stateValue = state;
}

public int getStateValue() {
return stateValue;
}

public void setStateValue(int state) {
this.stateValue = state;
}
}

CounterState state;

我同意,这看起来像是一个更完整的定义,但仍然存在问题。保留这样的代码并不能解决问题,读取时状态似乎仍然为空。像这样在对象的声明中添加一个 int:

CounterState state(0);

给我一​​个 Eclipse 错误“ token “0 上的语法错误”,删除此 token ”。所以我有点迷路了。据我所知,现在有一个枚举的构造函数,我应该能够将一个 int 传递给它以初始化它在创建时的值,但这似乎不起作用。

最佳答案

您是否尝试过在使用前初始化您的 state 变量?

CounterState state = CounterState.UNKNOWN;

关于java - Android(Java)枚举空指针错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18595628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com