Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将变量传递给其他类_Java_Android_Android Studio - Fatal编程技术网

Java 将变量传递给其他类

Java 将变量传递给其他类,java,android,android-studio,Java,Android,Android Studio,我目前的问题是,我不知道如何管理我的变量 目前我有5项活动。因此有5个Java类。 从第3类中,总是可以看到变量 前两个类仅提供按钮。在第三个类中,我定义了变量public static int Money=100。在第四节课上,我来到了第五节课,在第五节课上,变量被更改为10。通过实施更新,我可以通过单击第5类中的按钮(例如90 money)来更改变量 这是我的问题。如果我现在使用home按钮右侧的back按钮进入活动4,它仍然值原来的值100。如果我去3班,它仍然是相同的值。当我现在想回去时

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

目前我有5项活动。因此有5个Java类。 从第3类中,总是可以看到变量

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

这是我的问题。如果我现在使用home按钮右侧的back按钮进入活动4,它仍然值原来的值100。如果我去3班,它仍然是相同的值。当我现在想回去时,我在活动2上着陆,活动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));

< p>我不太熟悉Android开发,可能有更快的方法来实现这一点,但是你可以考虑在这个场景中实现单模式。如果您不熟悉它,那就意味着在应用程序的整个生命周期中,在内存中只存在一个实例的任何活动之外创建一个新类。当用户提供值时,让活动依次设置singleton对象上的值,您的任何活动都可以访问该值。如果需要,这里有一个参考:

正如另一个建议,您可能需要使用单例。我建议不要在任何活动中使用静态值。如果您在全局范围内需要该值,请将其移动到应用程序级别

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

首先,创建一个类扩展应用程序

public class MyApp extends Application() {

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

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

<application
        android:name="com.example.MyApp"
        //...
        >
此外,如果打开一个活动,修改该值,然后返回到上一个活动,它将不会反映更新后的值。要将其更新为更新后的值,您需要将逻辑移动到onResume


检查这个问题。希望它能解决你的问题。您肯定应该将Java中的变量字段设置为私有,并使用getter和setter。我不确定你的问题是否来自于此,但这确实是管理你的领域的好方法。您将能够轻松处理对字段的访问。
MoneyView.setText(String.valueOf(MyApp.money));
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));
}