Android:将int值从一个活动传递到另一个活动

问题描述:

我在努力弄清楚为什么我无法将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

您应该将您的数据作为附加信息传递给您的意图。为此,您需要首先确定要使用的全局密钥。你可以做这样的事情在你的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