在Android Studio中跨不同活动共享变量

时间:2016-03-07 20:52:32

标签: android class variables global sharing

我有一个名为Main2Activity的活动,它包含一个变量" double result1"设置等于表达式。它看起来像这样:

double result1 = n1 * 2 - 29;(其中n1是用户给出的输入)

我试图在另一个名为MainActivityEnd的类中使用此变量。我试过这个:

double finalResult = Main2Activity.result1 * 4;

当我使用setText在Main2Activity中打印result1时,它会输出正确的值。

但是当我使用finalResultMainActivityEnd打印setText时,它始终打印0.0

这有什么理由吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

如果活动在同一个流程中,您应该使用以下Android方式 - 意图。简而言之,Intent是Android在按顺序启动时改变活动之间价值的方式。

因此,您应该在Main2Activity中执行以下操作:

Intent intent = new Intent(Main2Activity.this, MainActivityEnd.class);
intent.putExtra("name", variable);
startActivity(intent);

Main2Activity启动MainActivityEnd。 Intent充满了MainActivityEnd需要的数据,在这种情况下是"变量"。

之后你应该在MainActivityEnd onCreate()方法中捕获Intent,如下所示:

Intent intent = getIntent();
double finalResult = intent.getDoubleExtra("name", 0);

其中"姓名"与Main2Activity中给出的名称相同,如果在Main2Activity中没有附加到Intent的double值,则0是默认值。

这是Android中此行为的最常见用法。

答案 1 :(得分:0)

像其他人已经在这里提到的那样使用requestIntents

但是,如果您计划放置一些全局逻辑(如方法),则使用Application类。

您可以像这样扩展Application类:

SharedPreferences

然后在你的活动中的任何一个:

public class YourApplication extends Application {
    public double result1 = 29;
}

确保您正确命名了应用程序类,它应该是YourApplication app = (YourApplication) this.getApplication(); System.out.printl(app.result1); 。并且不要忘记将新的应用程序类放入[YOUR_APP_NAME]Application

manifest