在活动之间使用“。”传递变量

时间:2018-07-05 16:27:56

标签: android android-studio android-intent

假设我在应用程序的主要活动中声明并初始化了以下变量:

public class MainActivity {
    int numberOfBricks = 23;
    int weightOfBrick = 13;
}

假设我然后转到应用程序的第二个活动,称为SecondActivity,我想计算砖块的总重量。我希望该过程可以是:

public class SecondActivity {
      int totalWeight = MainActivity.numberOfBricks * MainActivity.weightOfBrick;
}

对吗?

2 个答案:

答案 0 :(得分:3)

这是不正确的。 MainActivity.numberOfBricks表示该变量是MainActivity类的所有实例所共有的静态int,而所需的对象实际上是单个实例。您需要使用一个Intent才能到达SecondActivity,并发送附加内容。

MainActivity中:

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("numBricks", numberOfBricks);
intent.putExtra("weight", weightOfBrick);
startActivity(intent);

SecondActivity的{​​{1}}中:

OnCreate()

使用多余的内容会使用Intent intent = getIntent(); int numBricks = intent.getIntExtra("numBricks"); int weight = intent.getIntExtra("weight"); int totalWeight = numBricks * weight; 可以收集的密钥将变量的数据放入意图中,只要知道密钥即可。

答案 1 :(得分:3)

不。借助android应用生命周期,您可以通过Intent对象开始第二个活动。

有了这个意图对象,您就可以做到

Intent intent = new Intent(ThisActivity.this, NextActivity.class);
startActivity(intent);

但是,您可以通过在intent对象上调用putExtra来将信息传递给该intent,如下所示:

intent.putExtra("NameForInformation", actualInformation)

例如

Intent intent = new Intent(ThisActivity.this, NextActivity.class);
intent.putExtra("totalWeight", (numberOfBricks*weightOfBrick);
startActivity(intent);

在第二个活动的onCreate中,您可以执行getIntent.getExtra(“ NameOfInformation”)来检索信息

例如

int totalWeight = (int) getIntent.getExtra("totalWeight");