Android 将变量从一个活动传递到另一个活动

Android 将变量从一个活动传递到另一个活动,android,android-studio,android-intent,Android,Android Studio,Android Intent,我刚开始学习android开发,我想我应该做一个账单拆分应用程序。然而,我刚刚开始学习一个多页活动,但是我不知道如何从其他活动中获取数据 所以我要做的是从主要活动中提取一个计算出的金额,并在第二页显示一个摘要 int friendsInit = 1; float collectAmount = splitCalc(); /* Friends increment/decrement functions */ public void friendIncrement(View view) {

我刚开始学习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;
但它给了我一个错误,“非静态字段不能从静态上下文引用”。我不知道这意味着什么,也不知道如何补救


如果您能提供有关如何解决此问题的任何指导,或者是否有更好的方法在应用程序中存储数据,我们将不胜感激。

您可以通过Intent传递变量。例如:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    int example_extra = getIntent().getIntExtra("example_extra", 0);
}
在你的主要活动中

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);
}

您可以通过Intent传递变量。例如:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    int example_extra = getIntent().getIntExtra("example_extra", 0);
}
在你的主要活动中

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);
}

在第二个活动代码中,第二个参数0表示什么?另外,“example extra”是变量名还是必须单独创建?它表示默认值。因此,如果您调用的是不存在的Extra,那么在本例中它将返回0。哦,好的,如果您不希望它返回0,您可以忽略它吗?您不能。因为在Java中,int不可为null,所以如果出现问题,必须定义默认值。但是可以返回其他值而不是0。在第二个活动代码中,第二个参数0表示什么?另外,“example extra”是变量名还是必须单独创建?它表示默认值。因此,如果您调用的是不存在的Extra,那么在本例中它将返回0。哦,好的,如果您不希望它返回0,您可以忽略它吗?您不能。因为在Java中,int不可为null,所以如果出现问题,必须定义默认值。但是可以返回其他内容而不是0。