我刚刚开始学习android开发,并认为我会制作一个账单拆分应用程序。但是,我刚刚开始学习多页活动,但是我不知道如何从其他活动中获取数据。
所以我想做的是从主要活动中提取计算出的金额,并在第二页上显示摘要。
int friendsInit = 1;
float collectAmount = splitCalc();
/* Friends increment/decrement functions */
public void friendIncrement(View view) {
friendsInit = friendsInit + 1;
friendsUpdate(friendsInit);
}
public void friendsDecrement(View view) {
if (friendsInit > 1) {
friendsInit = friendsInit - 1;
}
friendsUpdate(friendsInit);
}
/* Split calculations and update */
/*Rounding procedure*/
public static float round(float d, int decimalPlace) {
BigDecimal bd = new BigDecimal(Float.toString(d));
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
return bd.floatValue();
}
public float splitCalc() {
EditText amountText = (EditText) findViewById(R.id.amount);
float number = Float.valueOf(amountText.getText().toString());
float collectAmount = round(number / (friendsInit + 1), 2);
return collectAmount;
}
所以我想在第二个活动中使用collectAmount变量。我四处搜寻,发现您使用了。
float collectAmount = MainActivity.collectAmount;
但是它给我一个错误,“不能从静态上下文中引用非静态字段”。我不确定这意味着什么或如何补救。
对于如何解决此问题的任何指导,或者是否有更好的方法将数据存储在应用程序中,将不胜感激。
答案 0 :(得分:2)
您可以通过Intent传递变量。例如这样的
在您的MainActivity中
public void startActivity() {
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("example-extra", 5);
startActivity(intent);
}
在第二个活动中,您可以像这样获取变量:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int example_extra = getIntent().getIntExtra("example_extra", 0);
}