2012-07-02 4 views
0

Я пытаюсь передать 2 переменные через пару Android-мероприятий. Один из них держит поворот вверх утратившим на последней странице:NumberFormatException при передаче переменной через Android Intent

Первая активность:

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); 

(Обратите внимание, что в данный момент я напечатал numRounds в LogCat и она была установлена ​​на правильный номер, а не нуль)

Третья активность:

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

На этом этапе приложение выходит из строя в строке, где я пытаюсь разобрать numRounds на целое число, с исключением NumberFormatException, жалуясь, что он не может разобрать нулевое значение. Никогда не возникает проблем с playerChoice, только numRounds. Я пробовал обрабатывать numRounds точно так же, как playerChoice, но ничего не работает. Что происходит? D:

ответ

3

Вы должны использовать extras.getInt("numRounds");

, потому что во втором Activity вы добавили putExtraINT значение:

+0

Ah! Я действительно пробовал это раньше, и он сказал, что такого метода нет. Кроме того, я не знаю, почему он работал, анализируя его как int во втором действии, но не в третьем, очень странно. Во всяком случае, это сработало, спасибо! знак равно –

2

использование

numRounds = extras.getInt("numRounds"); 

Intead из

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

, потому что вы передаете numRounds в Integer в intent.putExtra("numRounds", numRounds); от второй деятельности

или передать, как если вы хотите получить, как Строка:

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

он использовал 'putExtra (String, String)' для начала, но ... –

+0

@AlexLockwood: см. Это numRounds = Integer.parseInt (extras.getString ("numRounds")); –

+0

Да, но он использовал 'intent.putExtra (" numRounds "," 5 ");' для хранения 'String' в первую очередь. –

1

Насколько я думаю, в вашем втором действии вы устанавливаете numRounds целочисленное значение в putExtra() i.e целочисленную переменную numRounds, почему она вызывает проблему. либо получить numRounds в третьей деятельности, непосредственно как extras.getInt("numRounds") или отправить значение в виде строки во второй активности т.е. intent.putExtra("numRounds", numRounds+"");

Смежные вопросы