如何声明int变量对我的所有方法都可见?

时间:2013-04-05 13:54:50

标签: java android

我有一个游戏并且开始int值points = 100;并且随着游戏进度,每次点击按钮后该值会减少,直到游戏结束。我在使用switch的onClick方法中加略点。比赛结束后,我再次为第二轮重新加载游戏方法,这是我的问题。如果我将int变量设为实例变量,它将在第一轮结束后保持其值,并且我需要从100开始。如果我将其声明为局部变量我的方法使用intent调用另一个活动并发送最终点值将看不到这个变量。怎么解决这个问题?

所以,我宣布了一些变量:

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);

}

4 个答案:

答案 0 :(得分:1)

  

我再次重新加载游戏方法......

您可以使用一些可用于此目的的初始化代码...在游戏开始之前准备好所有必要的字段:

public class Game
{
    private int myCounter;

    public void initialize()
    {
         this.myCounter = 100;
         //initialize canvas, connections, etc.
    }
}

或者,只需在代码中使用reset()方法,即在游戏重新开始之前调用该方法。

答案 1 :(得分:1)

从一个活动移动到另一个活动时,只需将int与

之类的意图一起传递
Intent intent = new Intent(...);
intent.putInt("MyImportantInt", someNumber);

如果它只是一个可见性问题,请尝试使用getter和setter;) 或者在你的情况下,每次调用

时,只需从int中减去1的方法

答案 2 :(得分:0)

为了避免每次访问点时创建实例,请使用Static

 class PointsUtil{
    public static int  points =10   
    }

在programm的任何地方

PointsUtil.points= points+new points

当方法重新加载呼叫时

 PointsUtil.points= 10;

答案 3 :(得分:-1)

尝试使用java.lang.Integer而不是primitive int。