2014-09-29 161 views
0

我在努力弄清楚爲什麼我無法將int值從一個活動傳遞到另一個活動。該應用程序會要求您按下一個按鈕以產生一個從1-100開始的隨機數字,該數字將顯示在按鈕下方。還有另一個按鈕,將打開一個新的活動,只是顯示隨機數滾動...但我只是得到0.Android:將int值從一個活動傳遞到另一個活動

我已經研究過類似的問題,但無濟於事。

下面是從MainActivity

我的代碼
public class MainActivity extends ActionBarActivity { 

    int n; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    public void ButtonRoll(View view) { 

     TextView textRoll = (TextView) findViewById(R.id.textview_roll); 
     Random rand = new Random(); 
     n = rand.nextInt(100) + 1; 
     String roll = String.valueOf(n); 
     textRoll.setText("Random number is " + roll); 

    } 

    public void OpenStats(View view) { 
     Intent getStats = new Intent(this, Stats.class); 
     startActivity(getStats); 
    } 

    public int GetNumber(){ return n; } 
} 

我的繼承人二等。

public class Stats extends Activity { 

    MainActivity statistics = new MainActivity(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.stats); 
     int n = statistics.GetNumber(); 
     TextView tvStats = (TextView) findViewById(R.id.passedNumber_textview); 
     String number = String.valueOf(n); 
     tvStats.setText(number); 
    } 

} 

在使用活動時,是否使用getters錯誤的方式從另一個類中獲取數據?謝謝你的時間。

+0

看起來好像你正在調用你的'ButtonRole'方法 – 2014-09-29 20:46:09

+0

和統計信息剛剛創建,沒有通過 – Rob 2014-09-29 20:47:03

+0

[如何將一個活動的值傳遞給另一個Android?](http:/ /stackoverflow.com/questions/3510649/how-to-pass-a-value-from-one-activity-to-another-in-android) – mbmc 2014-09-29 20:47:55

回答

3

您應該將您的數據作爲附加信息傳遞給您的意圖。爲此,您需要首先確定要使用的全局密鑰。你可以做這樣的事情在你的MainActivity

public static final String SOME_KEY = "some_key"; 

然後修改OpenStats方法

public void OpenStats(View view) { 
    Intent getStats = new Intent(this, Stats.class); 
    getStats.putExtra(SOME_KEY, n); 
    startActivity(getStats); 
} 

,然後在Stats.class onCreate方法

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.stats); 

    int n = getIntent().getIntExtra(MainActivity.SOME_KEY, -1); 
    TextView tvStats = (TextView) findViewById(R.id.passedNumber_textview); 
    String number = String.valueOf(n); 
    tvStats.setText(number); 
} 

顯然,你應該確保你至少要調用ButtonRoll一次,或者你設置了n,以便不傳遞null int。

另外,注意,約定規定方法應該使用較低的駝峯格式。也就是說,第一個單詞是完全小寫的,後面的單詞的第一個字母是大寫。這會改變你的方法

OpenStats() -> openStats() 
ButtonRoll() -> buttonRoll() 

類/對象是上駱駝案件,只是爲了幫助避免混淆。

+0

頂部指導!完美工作。此外,遺憾的是會議錯誤..記住許多約定(xml字符串,id的,類,方法等),我應該知道更好。再次感謝。 – JohnJ73 2014-09-30 17:54:05

+0

@ JohnJ73不需要道歉,就格式化而言,肯定有很多指導原則。它會隨着時間而來。很高興我能幫上忙 :) – zgc7009 2014-09-30 18:18:22

相關問題