我有一个游戏,开始 int value points = 100; 并且随着游戏进度,每次点击按钮后该值都会减少,直到游戏结束。我在 onClick 方法中使用 switch 子跟踪点。游戏结束后,我再次为第二轮重新加载游戏方法,这是我的问题。如果我将该 int 变量设为实例变量,它将在第一轮结束后保持其值,并且我需要从 100 重新开始。如果我将其声明为局部变量,我的方法将使用意图调用另一个活动并发送最终点值看不到这个变量。如何解决这个问题?
所以,我声明了一些变量:
int numberPointsGame = 100;
static int numberPointsTotal;
现在,在我的 onClick 方法中,我设置了一些文本并对这些点进行子跟踪:
public void onClick(View v) {
switch(v.getId()){
case R.id.bA1:
numberPointsGame = numberPointsGame - 5;
a1.setText(mA1);
break;
case R.id.bA2:
numberPointsGame = numberPointsGame - 5;
a2.setText(mA2);
break;
现在,如果用户输入正确的答案,我将其放在另一个实例变量中,然后将其发送到另一个弹出活动,然后重新加载第一个活动并再次执行此操作。
if (ukucanRezultatStrK.equals(konacanNormalized)){
konacnoResenje.setText(mKonacno);
Intent i = new Intent(Asocijacije.this, Popup_asocijacije.class);
i.putExtra("brojPoenaPrimljeno", numberPointsGame);
startActivity(i);
mHandler.postDelayed(mLaunchTask,3700);
numberPointsTotal = numberPointsTotal + numberPointsGame;
setResults();
}else{
Toast.makeText(Asocijacije.this, "Wrong answer!", Toast.LENGTH_SHORT).show();
}
第二次重新加载后,当游戏结束时,我进入主菜单并将最终结果(两个游戏结果的总和)设置为一个按钮。我总是得到 0。这是主要问题。
Intent i = new Intent(getApplicationContext(), Izbor.class);
i.putExtra("numberPointsGame", numberPointsTotal);
startActivity(i);
和我的主菜单类:
int numberPointsGame;
int score = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.izbor);
addListenerOnButton();
Bundle extras = getIntent().getExtras();
if(extras !=null) {
score = extras.getInt("ukupnoAsocijacije", 0);
}
}
private void addListenerOnButton() {
poeniAso.setText("" + score);
}