Java 从任何活动中访问int

Java 从任何活动中访问int,java,android,int,Java,Android,Int,好的,我正在创建一个有很多活动的应用程序(我对编程非常陌生)。我想创建一个所有活动都可以访问和编辑的int 让我们假设int为“points”,在活动1中设置为0。然后在活动2中,我将访问点设置为0,并将其设置为3。之后,在活动3中,我得到了分数,现在等于3,并将其设置为2。在所有这些之后,我回到活动1,得到现在等于2的分数 我将如何实现这一点。我做了一些研究,但从我所看到的,我可以使用意图,活动结果,共享参考,单例。。。我只是不知道哪一个最好 在主活动中创建此 public static in

好的,我正在创建一个有很多活动的应用程序(我对编程非常陌生)。我想创建一个所有活动都可以访问和编辑的int

让我们假设int为“points”,在活动1中设置为0。然后在活动2中,我将访问点设置为0,并将其设置为3。之后,在活动3中,我得到了分数,现在等于3,并将其设置为2。在所有这些之后,我回到活动1,得到现在等于2的分数


我将如何实现这一点。我做了一些研究,但从我所看到的,我可以使用意图,活动结果,共享参考,单例。。。我只是不知道哪一个最好

在主活动中创建此

public static int globalInteger;
通过以下方式获得:

MainActivity.globalInteger

在MainActivity中创建此项

public static int globalInteger;
通过以下方式获得:

MainActivity.globalInteger

您应该使用共享首选项。 当您想在其中一个活动中保存int时,请执行以下操作:

SharedPreferences sharedPref = getActivity().getSharedPreferences("preference_file_key", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("your_key", yourInt);
editor.commit();
然后,要从其他活动中检索它,请执行以下操作:

SharedPreferences sharedPref = getActivity().getSharedPreferences("preference_file_key", Context.MODE_PRIVATE);
int yourInt=sharedPref.getInt("your_key", defaultValue);
首选项\u文件\u键是您在整个活动中用来访问存储您的值的共享首选项对象的名称。
您的\u key是一个字符串,用于保存和检索整数的键值,如果不存在指定的键,则是一个值yourInt将获得该字符串。

您应该使用共享首选项。 当您想在其中一个活动中保存int时,请执行以下操作:

SharedPreferences sharedPref = getActivity().getSharedPreferences("preference_file_key", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("your_key", yourInt);
editor.commit();
然后,要从其他活动中检索它,请执行以下操作:

SharedPreferences sharedPref = getActivity().getSharedPreferences("preference_file_key", Context.MODE_PRIVATE);
int yourInt=sharedPref.getInt("your_key", defaultValue);
首选项\u文件\u键是您在整个活动中用来访问存储您的值的共享首选项对象的名称。
您的_key是一个字符串,您可以将它用作保存和检索的整数的键值,defaultValue是一个值yourInt,如果指定的键不存在,它将得到该值。

一种方法是使用单例类。单例类是只创建其一个对象的类。您需要将原语(
int points
)放在这个单例类中。在你的主类中,得到这个单例的一个实例,当你想再次使用它时,你会得到之前已经创建的对象,所以你可以随意使用这个“point”变量

Singleton的目的是控制对象创建,限制 对象的数量仅限于一个。因为只有一个单身汉 实例,单个实例的任何实例字段将仅在每个实例中出现一次 类,就像静态字段一样

我建议阅读这篇文章:


可能还有其他方法来解决这个问题。

一种方法是使用单例类。单例类是只创建其一个对象的类。您需要将原语(
int points
)放在这个单例类中。在你的主类中,得到这个单例的一个实例,当你想再次使用它时,你会得到之前已经创建的对象,所以你可以随意使用这个“point”变量

Singleton的目的是控制对象创建,限制 对象的数量仅限于一个。因为只有一个单身汉 实例,单个实例的任何实例字段将仅在每个实例中出现一次 类,就像静态字段一样

我建议阅读这篇文章:


也许还有其他方法可以解决这个问题。

Sarah和colens提出的单例方法和共享偏好都可以解决您的需要

现在,这取决于这些变量的范围有多长。如果不关心应用程序关闭时会发生什么,可以使用单例类。如果你需要在应用程序关闭时保持持久性,那么你需要使用一些存储机制作为共享首选项


PD:当然,你可以混合使用这两种方法,甚至可以尝试其他方法(活动结果也可以),但根据给出的信息量,选择上面讨论的其中一种方法就可以了。

Sarah和colens提出的单例方法和共享首选项都可以解决你的需要

现在,这取决于这些变量的范围有多长。如果不关心应用程序关闭时会发生什么,可以使用单例类。如果你需要在应用程序关闭时保持持久性,那么你需要使用一些存储机制作为共享首选项


PD:当然,你可以混合使用这两种方法,甚至可以尝试其他方法(活动结果也可以),但根据给定的信息量,选择上面讨论的其中一种方法就可以了。

你可以通过活动之间的intent传递该int的值,并将其存储在任何其他int中,你可以随心所欲地使用它,为什么只使用一个int?您可以通过活动间的intent传递该int的值,并将其存储在任何其他int中,您可以根据需要使用它,为什么只使用一个int?谢谢!还有另一个建议呢,使用公共静态int。为什么不起作用呢?不,那也会起作用(同样,当你的应用程序关闭时,除非你存储它,否则会失去限制),正如我所说的,实现它的方法有很多谢谢!还有另一个建议,使用公共静态int。为什么不起作用呢?不,那也会起作用(同样,当你的应用程序关闭时,除非你存储它,否则会失去限制),正如我所说的,实现它的方法有很多种