0

我试图通过几个 Android 活动传递 2 个变量。其中一个在最后一页上一直显示为空:

第一个活动:

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

第二个活动:

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)

第三个活动:

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

此时,应用程序在我尝试将 numRounds 解析为整数的行崩溃,并出现 NumberFormatException 抱怨它无法解析空值。playerChoice 从来没有问题,只有 numRounds。我尝试以与 playerChoice 完全相同的方式处理 numRounds,但似乎没有任何效果。这是怎么回事?丁:

4

3 回答 3

3

你必须使用extras.getInt("numRounds");

因为在第二个Activity你添加到putExtra int值:

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

采用

numRounds = extras.getInt("numRounds");

而不是

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

因为您从第二个 Activity将numRounds作为 Integer传递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

据我认为,在您的第二个活动中,您在 putExtra() 中设置 numRounds 一个整数值,即整数变量 numRounds 这就是它导致问题的原因。要么直接在第三个活动中获取 numRounds,要么在第二个活动中将extras.getInt("numRounds")值作为字符串发送,即intent.putExtra("numRounds", numRounds+"");

于 2012-07-02T13:38:02.693 回答