2014-05-08 168 views
0

我希望將分數值從一個活動傳遞給另一個活動。我在新活動中添加了意圖和getExtras,但似乎沒有獲得該值。在Android中的活動之間傳遞數據?

活動1;

Intent intent = new Intent(Game.this, EndGame.class); 
     intent.putExtra("put_score", score); 
     startActivity(intent); 
     Game.this.finish(); 

活動2;

Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     score = extras.getString("put_score"); 
    } 

    setContentView(R.layout.endgame); 

    scoreResult = (TextView) findViewById(R.id.scoreNum); 

    scoreResult.setText(score); 
+1

有什麼問題? – MatheusJardimB

+0

您在'scoreResult'處看到什麼值? – nikis

+0

活動1中得分值爲19,活動2得分值爲零。它似乎沒有提供或得到分數值。 – Seatter

回答

1

您放置在使用putExtraputExtras 所以看過他們以同樣的方式

使用 意圖數據getXXExtra() XX是你的數據是具體的數據類型的基礎上,例如

,如果得分爲整數,則使用:

getIntExtra("put_score", 0);//0 zero is default in case data was not found 

http://developer.android.com/reference/android/content/Intent.html

2

您的問題是從下面這段代碼進來Bundle.java

try { 
    return (String) o; 
} catch (ClassCastException e) { 
    typeWarning(key, o, "String", e); 
    return null; 
} 

這裏o是你投入到捆綁的對象(包實際上有Map<String, Object>類型的核心存儲,因此,由於自動裝箱,當你把int添加到捆綁包時,它將變成Integer)。但是,不幸的是,Integer不能被明確地鑄造到String,所以你得到null。換句話說:如果你把int,然後使用getInt檢索值。

+0

你回答得太好....乾杯 – EdmDroid

+0

但是...他根本沒有添加任何包!他用putExtra(String,Int)不是putExtras(Bundle)!! – Yazan

+1

@Yazan這只是簡寫的方法。所有額外的數據存儲在包 – nikis

相關問題