【问题标题】:How should i save my app data in my android app?我应该如何将我的应用数据保存在我的 android 应用中?
【发布时间】:2012-06-14 08:36:55
【问题描述】:

我正在制作我的第一个 Android 应用程序。我想在一个活动中保存一个字符串数组,然后在第二个活动中我想将这些字符串显示为一个列表。我正在使用带有 API 8 的 android 平台 2.2 所以我不能使用 putStringSet()。有什么方法可以将我的数据保存为我的应用程序中的文本文件?然后,每当用户添加新字符串时,我就可以在该文件中添加一个新行。在制作列表视图时,我可以根据新行解析它并制作字符串数组。 感谢您的帮助。

【问题讨论】:

    标签: java android stream fileinputstream fileoutputstream


    【解决方案1】:

    使用文件处理。 易于初学者使用,高效满足您的目的。

    http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

    【讨论】:

    • 我使用了那个内部存储。但是每次我在文件中写一些东西时,它都会删除旧数据。我也想要旧数据
    • 您以错误的文件模式打开文件。您每次都在创建一个新文件,截断所有旧的保存数据。以APPEND模式打开,你的数据一定会被保留。
    • FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_APPEND);
    【解决方案2】:

    Intent 中有一个方法putStringArrayListExtra("id", ArrayList list) 在启动前使用。然后在从 Intent 启动的 Activity 中,使用getStringArrayList("id")

    例如:

    Intent intent = new Intent(MainActivity.this.getApplicationContext(), NewActivity.class);
    intent.putStringArrayListExtra("id", yourArrayList)
    MainActivity.this.startActivity(intent);
    

    然后在NewActivity的onCreate()方法上

    ArrayList<String> list = getIntent().getExtras().getStringArrayList("id");
    

    【讨论】:

    • 这个字符串数组列表应该像用户历史。无论用户将做什么,都应该保存,然后显示在列表中。通过这种方式,我们将发送一个数组列表,该列表将在该意图之前创建。如果我们还有一些用户创建的旧字符串呢?我们如何获取它?
    • 然后你应该将文本写入一个文件,然后将其解析为一个 ArrayList,然后随意传递。
    【解决方案3】:

    但是你可以使用 putStringArray,或者将 putStringArrayList 包装到一个 Bundle 中。

    Bundle 通过 Intents 传递。

    ->http://developer.android.com/reference/android/os/Bundle.html#putStringArray(java.lang.String,java.lang.String[])

    那么,如果你想将其保存为文件,那么你必须使用这种方法:http://www.java-forums.org/advanced-java/13852-saving-arraylist-file.html

    但我认为您更喜欢直接传递字符串列表。

    【讨论】:

      【解决方案4】:

      你为什么要使用文件呢? 只需检查 sharedPreferences 和 sqliteDb 它可能对你有用..共享偏好很容易处理

      【讨论】:

      • 我没有尝试 sqliteDb。但我检查了sharedPreferences。就我而言,sharedPreferences 不是一个好的解决方案。
      猜你喜欢
      • 2011-01-05
      • 2015-05-10
      • 2022-08-15
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      相关资源
      最近更新 更多