0

いくつかの Android アクティビティを介して 2 つの変数を渡そうとしています。それらの 1 つは、最後のページで null として表示され続けます。

最初のアクティビティ:

Intent intent= new Intent(RoundOptionActivity.this, MoveOptionActivity.class);
intent.putExtra("numRounds", "5");
startActivity(intent);

2 番目のアクティビティ:

Bundle extras = getIntent().getExtras(); 
if(extras !=null) {
    numRounds = Integer.parseInt(extras.getString("numRounds"));
}

.........

Intent intent = new Intent(MoveOptionActivity.this, MoveActivity.class);
intent.putExtra("numRounds", numRounds);
intent.putExtra("playerChoice", playerChoice);
startActivity(intent);

(この時点で LogCat に numRounds を出力したところ、null ではなく正しい数値に設定されていたことに注意してください)

3 番目のアクティビティ:

Bundle extras = getIntent().getExtras(); 
if(extras !=null) {
    playerChoice = Integer.parseInt(extras.getString("playerChoice"));
    numRounds = Integer.parseInt(extras.getString("numRounds"));
}

この時点で、numRounds を整数に解析しようとした行でアプリケーションがクラッシュし、null 値を解析できないという NumberFormatException が発生します。playerChoice には問題はなく、numRounds だけです。playerChoice とまったく同じ方法で numRounds を処理しようとしましたが、何も機能しないようです。どうしたの?D:

4

3 に答える 3

3

使用する必要がありますextras.getInt("numRounds");

秒でintActivityに追加したため:putExtra

numRounds = Integer.parseInt(extras.getString("numRounds"));
于 2012-07-02T13:40:19.367 に答える
2

使用する

numRounds = extras.getInt("numRounds");

代わりに

numRounds = Integer.parseInt(extras.getString("numRounds"));

2 番目のアクティビティからnumRoundsを整数として渡しているためです。intent.putExtra("numRounds", numRounds);

または、文字列として受け取りたいかのように渡します。

Intent intent = new Intent(MoveOptionActivity.this, MoveActivity.class);
intent.putExtra("numRounds", numRounds+"");
intent.putExtra("playerChoice", playerChoice);
startActivity(intent);
于 2012-07-02T13:36:51.170 に答える
1

2番目のアクティビティで思う限り、putExtra()でnumRoundsに整数値を設定しています。つまり、整数変数numRoundsが問題を引き起こしています。3番目のアクティビティでnumRoundsをそのまま取得するかextras.getInt("numRounds")、2番目のアクティビティで値を文字列として送信します。intent.putExtra("numRounds", numRounds+"");

于 2012-07-02T13:38:02.693 に答える