2

以前のアクティビティから取得した getIntent 値(スコア)を使用しようとしていますが、それは不可能のようです。if else の下での足し算と引き算はスコアを検出できないようです。他に方法はありますか?

package com.mkyong.android;

import com.mkyong.android.R;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;

public class App2Activity extends Activity {

    private RadioGroup radioAnswerGroup2;
    private RadioButton radioAnswerButton2;
    private Button btnSubmit2;

    Button button2;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        addListenerOnButton();


    }

    public void addListenerOnButton() {

        final Context context = this;

        radioAnswerGroup2 = (RadioGroup) findViewById(R.id.radioAnswer2);


        button2 = (Button) findViewById(R.id.button2);
        Button button2pre = (Button) findViewById(R.id.button2pre);

        Intent intent = getIntent();
        final int score = intent.getIntExtra("int", -1);
        final TextView result2 = (TextView) findViewById(R.id.txtResult2);
        result2.setText("Result counting: " + String.valueOf(score));


        button2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {


                int correctId2 = (R.id.answer2b);

                // get selected radio button from radioGroup
                int selectedId2 = radioAnswerGroup2.getCheckedRadioButtonId();

                // find the radio button by returned id
                radioAnswerButton2 = (RadioButton) findViewById(selectedId2);

                if (selectedId2==correctId2){

                     score = score + 1;
                    //show toast saying it is correct
                    //Context context = getApplicationContext();
                    //CharSequence text = ("You are correct!");
                    //int duration = Toast.LENGTH_SHORT;

                    //Toast toast = Toast.makeText(context, text, duration);
                    //toast.show();
                }
                else{

                    score = score - 1;
                    //toast incorrect
                    //Context context = getApplicationContext();
                    //CharSequence text = ("You are wrong but it's ok and the answer is Data Link");
                    //int duration = Toast.LENGTH_LONG;

                    //Toast toast = Toast.makeText(context, text, duration);
                    //toast.show();
                }   

                Intent intent2 = new Intent(App2Activity.this, App3Activity.class);
                intent2.putExtra("int", score); 
                startActivity(intent2);  

            }

        });


        button2pre.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent intent = new Intent(context, AppActivity.class);
                startActivity(intent);   

            }

        });


    }

}
4

2 に答える 2

9

int scoreグローバル変数に移動して、onClick でアクセスします。final初期化後に値を変更できるように、キーワードを削除する必要もあります。

 public class YourActivity extends Activity{

       int score;

      public onCreate( /*...etc.*/
于 2012-06-21T06:21:58.387 に答える
1

finalからキーワードを削除するだけです:

final int score = intent.getIntExtra("int", -1);

final変数は、初期化子または割り当てステートメントを介して一度しか初期化できないためです。

詳細はこちらをご覧ください

于 2012-06-21T06:20:09.433 に答える