2012-01-11 5 views
2

Это мой код в моем первом занятии:нулевое значение в getIntent.getExtras.getString()

Intent i = new Intent(this, OtherScreen.class); 
    i.putExtra("id1", "first"); 
    i.putExtra("id2", "second"); 
    startActivity(i); 

, где первый, второй, являются значения, которые я хочу передать. и на моем другом классе у меня есть это:

Intent i = getIntent(); 
     Bundle extras = i.getExtras(); 
     String result = extras.getString("id1"); 
     System.out.println("yeah"+result); 

, но после того, как я запустить его, мой результат null.Can вы мне помочь? Если я так напишу getString, я получаю синтаксические ошибки.

String result = extras.getString(id1); //id1 cannot be resolved to a variable 
String result = extras.getString("id1","default value"); // remove argument 

ответ

6
Intent i = new Intent(yourcurrentactivity.this, OtherScreen.class); 

i.putExtra("id1", "first"); 
i.putExtra("id2", "second"); 
startActivity(i); 

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    String result = extras.getString("id1");     
    System.out.println("yeah"+result); 
} 
+0

У меня есть два значения одного становится и другой равна нулю – Prasad

+1

@Праспад Что? Я предполагаю, что другое значение равно null, потому что 1) имя ключа является несоответствием 2) null перед отправкой через i.putExtra - вы должны отлаживать, чтобы проверить и убедиться, что значение не равно null до того, как вы сделаете i.putExtra .. –

+1

@smith Я получил эту проблему во втором, и сказал об ошибке до передачи – Prasad

0

Вы можете попробовать: String result = extras.get("id1");

3

В качестве альтернативы для большей точности, вы можете использовать if(getIntent.hasExtras("id11")' before actually getting extras from the bundle and do some action if its null

0

Я также возникли проблемы с нулевыми значениями , @ Идея YuDroid использовать if (getIntent.hasExtras("id11") - хорошая идея. Другая проверка безопасности, что я нашел при чтении Bundle documentation, хотя,

getString(String key, String defaultValue) 

Таким образом, если строка не существует, вы можете предоставить ему значение по умолчанию, а не она возвращается нуль.

Итак, ответ @ AprilSmith изменен значением по умолчанию String.

Intent i = new Intent(yourcurrentactivity.this, OtherScreen.class); 

i.putExtra("id1", "first"); 
i.putExtra("id2", "second"); 
startActivity(i); 

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    String result = extras.getString("id1", "myDefaultString"); // This line modified 
    System.out.println("yeah"+result); 
} 
0

Если кто-то еще есть этот issue..here является решением

типа данных вы передаете в первой деятельности должны быть такими же в приемном конце.

'Intent myIntent = new Intent(D1Activity.this, D2Activity.class);' 
     'myIntent.putExtra("dval", dval);' 
     ' D1Activity.this.startActivity(myIntent);' 

в D2Activity

Bundle extras = getIntent().getExtras(); 
    if (extras != null) {; 
     edval = extras.getInt ("dval"); 
    } 

здесь extras.getString() не будет работать, как мы прошли Int не строку

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