我正在为Android平台制作游戏,我需要从多个活动(成就,声音开/关等)中访问一些信息。我知道我可以将单个值从一个活动传递到另一个活动,但是有没有一种方法可以像数据库或可以从任何活动访问变量的东西一样进行设置?
是的,您可以使用SQLite来持久化数据。还有其他选择: http://developer.android.com/guide/topics/data/data-storage.html 这实际上取决于数据的复杂程度。另一种方法是将数据作为可序列化或可分包对象在活动之间传递,但如果希望能够从任何活动重新查询数据,则需要 sqlite db 或某种机制来序列化数据并将其写入磁盘。
这取决于你的应用要求。通常数据通过以下方式在 2 个活动之间共享,"作为意图的一部分发送的附加内容"
如果您想在多个活动之间共享数据,则可以使用,1. 首选项 - 使用应用程序首选项(存储在应用程序目录中的 XML 文件)2. 数据库 - 使用 Android 内容提供商/解析器
方法可以实现这一点。 您可以设置SQLite数据库,使用SharedPreferences,或者将startActivityForResult()与Intent结合使用。 如果您想研究它们,所有这些都在开发人员的网站上有很好的记录。
您可以使用共享首选项作为执行此操作的简单方法。
文档 说:
SharedPreferences 类提供了一个通用框架,允许 保存和检索原始数据的持久键值对 类型。您可以使用"共享首选项"来存储任何原始数据: 布尔值、浮点数、整数、长整型和字符串。此数据将保留 跨用户会话(即使应用程序被终止)。
以下是文档中的代码:
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
}
对于存储数据的其他方法,Android网站上有非常好的教程 - http://developer.android.com/guide/topics/data/index.html