-1

私は Android が初めてで、Intent を使用してある .java クラスから別のクラスに整数値を渡そうとしています。整数は最初の .java ファイル内で宣言され、スコアを生成するために IF ステートメント内で使用されます。

public class Diabetes_Question_1 extends Activity {

public int Total = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.diabetes_question_1);

    Button btnBack = (Button) findViewById(R.id.btnBack1);
    btnBack.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            startActivity(new Intent(Diabetes_Question_1.this, Diabetes_Question_2.class));

        }
    });

    final RadioButton rb1 = (RadioButton) findViewById(R.id.btnDQ1Radio1);
    final RadioButton rb2 = (RadioButton) findViewById(R.id.btnDQ1Radio2);
    final RadioButton rb3 = (RadioButton) findViewById(R.id.btnDQ1Radio3);
    Button btnNext = (Button) findViewById(R.id.btnNext1);
    btnNext.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if(rb1.isChecked()==true) {
                Total = 1;
            } else if (rb2.isChecked()==true) {
                Total = 2;
            } else if (rb3.isChecked()==true) {
                Total = 3;
            } else {
                Total = 4;
            }

            Toast.makeText(Diabetes_Question_1.this, String.valueOf(Total), Toast.LENGTH_SHORT).show();

            Intent i = new Intent(Diabetes_Question_1.this, Diabetes_Question_3.class);
            i.putExtra("totalScore", Total);
            startActivity(i);
        }
    });
}
}

このスコアが生成されたら、それを別の .java クラスに渡し、次の IF ステートメントに基づいてスコアを追加できるようにします。

public class Diabetes_Question_3 extends Activity {

Bundle extras = getIntent().getExtras();
int Total3 = extras.getInt("totalScore");

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.diabetes_question_3);

    Button btnBack = (Button) findViewById(R.id.btnBack2);
    btnBack.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            startActivity(new Intent(Diabetes_Question_3.this, Diabetes_Question_1.class));

        }
    });

    final RadioButton rb1 = (RadioButton) findViewById(R.id.btnDQ3Radio1);
    final RadioButton rb2 = (RadioButton) findViewById(R.id.btnDQ3Radio2);
    final RadioButton rb3 = (RadioButton) findViewById(R.id.btnDQ3Radio3);
    Button btnNext = (Button) findViewById(R.id.btnNext3);
    btnNext.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            startActivity(new Intent(Diabetes_Question_3.this, Diabetes_Question_4.class));

            if(rb1.isChecked()==true) {
                Total3 = + 1;
            } else if (rb2.isChecked()==true) {
                Total3 = + 1;
            } else if (rb3.isChecked()==true) {
                Total3 = + 1;
            } else {
                Total3 = + 1;
            }

            Toast.makeText(Diabetes_Question_3.this, String.valueOf(Total3), Toast.LENGTH_SHORT).show();

        }
    });
}
}

これを示すトーストがあるので、IF ステートメントが機能することはわかっています。ただし、次の .java クラスに移行することが問題であり、コードの改善に苦労しています。

次のエラー メッセージが表示されます。

致命的な例外: Main java.lang.RuntimeException: アクティビティ ComponentInfo {パッケージ名} java.lang.NullPointerExcpetion をインスタンス化できません

どんな助けでも大歓迎です。

4

1 に答える 1

1

これを入れて。

Bundle extras = getIntent().getExtras();
int Total3 = extras.getInt("totalScore");

Diabetes_Question_3アクティビティのonCreateメソッド内。

Javaの命名規則に従う必要があります。

int total3 = 0; //Instance variable.

Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.diabetes_question_3);

    .........
    Bundle extras = getIntent().getExtras();
    total3 = extras.getInt("totalScore");
于 2013-03-20T17:06:05.260 に答える