0

ゲームがあり、int 値ポイント = 100 を開始します。ゲームが進行すると、ボタンをクリックするたびに値が減少し、ゲームが終了するまで続きます。スイッチを使用して onClick メソッドでポイントをサブトラックします。ゲームが終了した後、2 番目のラウンドのためにもう一度ゲーム メソッドをリロードします。これが私の問題です。その 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();
                                                    }

2 回目のリロード後、ゲームが終了したら、メイン メニューに移動し、最終結果 (2 つのゲーム結果の合計) をボタンに設定します。私は常に 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

4 に答える 4

1

あるアクティビティから別のアクティビティに移動するときは、次のようにインテントとともに int を渡すだけです

Intent intent = new Intent(...);
intent.putInt("MyImportantInt", someNumber);

単なる可視性の問題である場合は、getter と setter を試してください ;) または、呼び出されるたびに int から 1 を減算するだけのメソッドを使用してください。

于 2013-04-05T13:58:33.627 に答える
1

ゲームメソッドをもう一度リロードします...

この目的に役立ついくつかの初期化コードを用意できます...ゲームを開始する前に、必要なすべてのフィールドを準備します。

public class Game
{
    private int myCounter;

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

またはreset()、ゲームが再開する前に呼び出されるメソッドをコードに含めるだけです。

于 2013-04-05T13:57:52.487 に答える