将变量从一项活动传递到另一项活动

时间:2018-11-03 16:18:00

标签: android android-studio android-intent

我刚刚开始学习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;

但是它给我一个错误,“不能从静态上下文中引用非静态字段”。我不确定这意味着什么或如何补救。

对于如何解决此问题的任何指导,或者是否有更好的方法将数据存储在应用程序中,将不胜感激。

1 个答案:

答案 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);
}
相关问题