我正在通过Udemy课程,我们正在构建一个基本的“更高或更低”的应用程序。我的应用程序本质上是有效的,但无论我销毁和重新启动活动多少次,它为我们选择的随机数总是相同的。
我的MainActivity.java
:
//mad import statements here
public class MainActivity extends AppCompatActivity {
int correctNumber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int correctNumber = generateNum();
}
protected int generateNum(){
Random rand = new Random();
int randNum = rand.nextInt(100);
return randNum;
}
protected void numberEval(View view) {
EditText enteredNumber = (EditText) findViewById(R.id.numberEntry);
String numberString = enteredNumber.getText().toString();
Button pressMe = (Button) findViewById(R.id.button);
int numToEval = Integer.parseInt(numberString);
String result;
TextView showWinLose = (TextView) findViewById(R.id.winLoseText);
if (numToEval > correctNumber) {
result = "Too high!";
} else if (numToEval < correctNumber) {
result = "Too Low!";
}else {
result = "You guessed it!";
}
showWinLose.setText(result);
}
}
超级超级基本,是吗?最初,我的numberEval()
方法称为generateNum()
,但后来我意识到每次按下按钮时都会生成一个新数字。所以我按照它的方式设置它,onCreate()
只生成correctNumber
一次,correctNumber
现在是一个类变量。现在它不会在每次按键单击时生成新数字,但似乎根本不会生成新数字。无论我何时启动,关闭,重新启动等应用,它都会被置于0。
我该如何解决这个问题?提前致谢。
答案 0 :(得分:0)
public class MainActivity extends AppCompatActivity {
int correctNumber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int correctNumber = generateNum();
}
// ...
}
onCreate()
中的最后一行声明了一个名为correctNumber
的 local 变量。这会隐藏具有相同名称的类字段,并且仅在onCreate()
内可用。要解决此问题,请从此行中删除int
,以便您改为使用类字段。