2012-01-11 72 views
2

這是我在我的第一個活動代碼:空值()

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 2014-08-06 16:19:16

+1

@Prasad什麼?我猜測另一個值爲空的可能性,因爲1)鍵名稱不匹配2)在通過i.putExtra發送之前爲null - 您應該進行調試以檢查並確保在執行i.putExtra之前該值不爲空。 。 – 2014-08-07 03:01:16

+1

@smith我得到的是,在第二個的一個問題ü告訴空傳遞 – Prasad 2014-08-08 05:55:31

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) 

這樣,如果該字符串不存在,你可以爲它提供一個默認值,而不是它正在返回null。

因此,這裏是@ AprilSmith的答案與默認字符串值修改。

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不是字符串將無法正常工作