将变量传递给其他类

时间:2018-05-25 18:08:44

标签: java android android-studio

我目前遇到的问题是我不知道如何管理我的变量。

目前我有5项活动。从而有5个Java类。 从第3课Var。总是被人看到。

前两个类仅提供按钮。在第三节课中,我定义了我的变量(public static int Money = 100)。在第4课,我来到第5课,变量被改变(Butto(-10))。通过实现更新,我可以更改var。通过单击按钮(在第5类)(例如90钱)。

这是我的问题。如果我现在进入活动4(使用主页按钮右侧的后退按钮),它仍然值得旧值(100)。如果我去第3课,它仍然是相同的价值。当我想现在回去的时候,我会进入活动2,这是空的。但是当我现在再次进入3或4时,值会更新(现在为90钱)。怎么能直接做到这一点?

处理此类变量的最佳方法是什么?我当然还有10个受此问题影响的其他值。

这是第3类中的代码,我在其中定义变量,等于第4类。

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_class3);

    //Header
    TextView MoneyView = findViewById(R.id.outputmoney);
    MoneyView.setText(String.valueOf(class3.money));......}

认识第4和第5类的声明

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_class4);

TextView moneyView = findViewById(R.id.outputmoney);
MoneyView.setText(String.valueOf(class3.money));

BG,谢谢

2 个答案:

答案 0 :(得分:0)

我对Android开发并不是非常熟悉,并且可能有更快的方法来完成此任务,但您可以考虑在此方案中实现单例模式;如果您不熟悉它,那意味着创建一个新类(与您的任何活动分开),其中在应用程序的整个生命周期中内存中只有一个实例。当用户提供值时,让活动依次设置单个对象上的值,您的任何活动都可以访问该值。如果需要,可以参考以下内容:https://www.tutorialspoint.com/design_pattern/singleton_pattern.htm

答案 1 :(得分:0)

正如对方建议的那样,您可能想要使用Singleton。我建议不要在任何活动中使用静态值。如果您需要全局值,请将其移至应用程序级别。

我只是给你一个基本的例子,但你可以用类似的解决方案做更多的事情。

首先,创建一个扩展Application的类。

public class MyApp extends Application() {

     public static int money = 100;
     // any other values you want in here

}

并确保您更新清单以使用此新类。

<application
        android:name="com.example.MyApp"
        //...
        >

现在,您可以在任何活动中访问它。

MoneyView.setText(String.valueOf(MyApp.money));

此外,如果您打开一个Activity,修改该值,然后返回上一个Activity,它将不会反映更新的值。要将其更新为更新后的值,您需要将逻辑移至onResume

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_class3);
}

protected void onResume() {
    //Header
    TextView MoneyView = findViewById(R.id.outputmoney);
    MoneyView.setText(String.valueOf(MyApp.money));
}