是否可以在起始活动中创建变量(例如:活动1中的Book类) 并且可以在应用程序的任何地方使用它(例如,活动3,4和5中的Book类)而不实际传递它。
我在问,因为我的xml处理程序创建了一系列对象,因为它在对对象进行任何更改后也会更新xml文件。
答案 0 :(得分:4)
您可以创建静态变量。只要声明它具有适当的访问权限(例如public
),它就可以直接用于同一进程中的任何活动。 (这将是默认设置;您需要做额外的工作才能将活动纳入单独的流程。)
将这些全局变量分成单独的类是很常见的。
但是,请注意,如果您的应用程序被推送到后台,则该进程可能会被终止并重新创建。在这种情况下,存储在静态变量中的任何数据都将丢失。替代方案包括使用SharedPreferences,数据库或ContentProvider。
答案 1 :(得分:1)
实现一个类,例如名为GlobalVariables的类,它扩展了Application。
public class GlobalVariables extends Application
在AndroidManifest.xml中,在应用程序标记中执行此操作:
<application android:label="@string/YourAppName" android:icon="@drawable/YourIcon"
android:name=".activities.GlobalVariables.">
不要忘记声明类的包路径(类似于将活动添加到清单文件)。
然后,您可以从应用程序的任何位置访问此类及其变量或方法。在任何Activity的onCreate方法中执行此操作:
GlobalVariables globalVariables = (GlobalVariables) getApplicationContext();
从应用程序扩展的类(例如我们的GlobalVariables)将在应用程序启动时创建,并且在应用程序被销毁之前一直可用。
您可以在GlobalVariables类中拥有HashMap或其他可存储所需变量的位置。将第一个Activity中的变量推送到GlovalVariables,然后从第二个槽中将变量拉到GlobalVariables。像这样(再次):
GlobalVariables globalVariables = (GlobalVariables) getApplicationContext();