Android 将变量从一个活动传递到另一个活动
我刚开始学习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) {
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。