Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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
从多个活动(Android)中调用信息的最佳方式是什么?_Android_Database_Variables_Android Activity - Fatal编程技术网

从多个活动(Android)中调用信息的最佳方式是什么?

从多个活动(Android)中调用信息的最佳方式是什么?,android,database,variables,android-activity,Android,Database,Variables,Android Activity,我正在为Android平台制作一个游戏,我需要访问多个活动(成就、声音开/关等)中的一些信息。我知道我可以将单个值从一个活动传递到另一个活动,但是否有一种方法可以设置为数据库或其他可以访问任何活动变量的地方?是的,可以使用SQLite来持久化数据。还有其他选择:这实际上取决于数据的复杂程度。另一种方法是在活动之间以可序列化或可打包对象的形式传递数据,但如果希望能够从任何活动中重新查询数据,则需要sqlite db或某种机制来序列化数据并将其写入磁盘 这取决于您的应用程序要求。通常情况下,数据通过

我正在为Android平台制作一个游戏,我需要访问多个活动(成就、声音开/关等)中的一些信息。我知道我可以将单个值从一个活动传递到另一个活动,但是否有一种方法可以设置为数据库或其他可以访问任何活动变量的地方?

是的,可以使用SQLite来持久化数据。还有其他选择:这实际上取决于数据的复杂程度。另一种方法是在活动之间以可序列化或可打包对象的形式传递数据,但如果希望能够从任何活动中重新查询数据,则需要sqlite db或某种机制来序列化数据并将其写入磁盘

这取决于您的应用程序要求。通常情况下,数据通过以下方式在两个活动之间共享:, “作为意图的一部分发送的额外信息”

如果您希望跨多个活动共享数据,则可以使用, 1.首选项-使用应用程序首选项(存储在应用程序目录中的XML文件)
2.数据库-使用Android内容提供商/解析器有很多方法可以实现这一点。您可以设置SQLite数据库、使用SharedReferences或结合使用startActivityForResult()和Intent。如果你想研究它们,所有这些都在开发者的网站上有很好的文档记录。

你可以使用共享首选项作为简单的方法

文件说:

SharedReferences类提供了一个通用框架,允许 您需要保存和检索基本数据的持久键值对 类型。您可以使用SharedReferences保存任何基本数据: 布尔、浮点、整型、长型和字符串。这些数据将持续存在 跨用户会话(即使应用程序被终止)

以下是文档中的代码:

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站点上有非常好的教程-

您能解释一下偏好吗?我尝试过使用它,但我不确定如何使用。startActivityForResult与启动活动并让“调用”活动从中获取结果的具体情况有关。通常,您所需要的只是startActivity(新的意图(this,SomeActivity.class).putSerializableExtra(“foo”,someSerializableObject));他说,他需要访问其他活动的数据,而不仅仅是向他们发送数据。使用startActivityForResult()执行此操作将允许他传入一个标志,然后根据他发送的标志接收数据,这是OP要求的。