1

是否可以在启动活动中创建一个变量(例如:活动 1 中的 Book 类)并使其在应用程序中的任何位置可用(例如,活动 3、4 和 5 中的 Book 类)而不实际传递它。

我问是因为我的 xml 处理程序创建了一系列对象,它还会在对对象进行任何更改后更新 xml 文件。

4

2 回答 2

4

您可以创建一个静态变量。只要它被声明为具有适当的访问权限(例如,public),它就可以直接用于同一进程中的任何活动。(这将是默认设置;您需要做额外的工作才能将活动放入单独的流程中。)

将这些全局变量分离到一个单独的类中是很常见的。

但是,请注意,如果您的应用程序被推送到后台,则该进程可能会被终止并重新创建。在这种情况下,存储在静态变量中的任何数据都将丢失。替代方法包括使用 SharedPreferences、数据库或 ContentProvider。

于 2012-05-14T20:19:56.437 回答
1

Implement a class, for example with the name GlobalVariables, which extends Application.

public class GlobalVariables extends Application

In your AndroidManifest.xml do this in the application tag:

<application android:label="@string/YourAppName" android:icon="@drawable/YourIcon"
                 android:name=".activities.GlobalVariables.">

Don´t forget the package path for declaring your class (similar you do for adding activities to manifest file).

Then you can access this class and its variables or methods from everywhere of your application. Do this in the onCreate method of any Activity:

GlobalVariables globalVariables = (GlobalVariables) getApplicationContext();

The Class extended from Application (e.g. our GlobalVariables here) will be created with the start of your app and will be available until the app will be destroyed.

You can have a HashMap or something, else where you can store your desired variable, in the GlobalVariables class. Push the variable from your first Activity into the GlovalVariables and pull it from the second trough getting an instance to the GlobalVariables. Like this (once again):

GlobalVariables globalVariables = (GlobalVariables) getApplicationContext();
于 2012-05-14T20:46:44.263 回答