4

そのため、データベースを作成する代わりに、を使用してデータを保存していますSharedPreference

私のコードは以下の通りです:

   SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
        editor.putInt("favid"+id, 1);
        editor.commit();
        Toast.makeText(getApplicationContext(), "Select as favorite", Toast.LENGTH_SHORT).show();

今、そのデータを取得したいので、他のアクティビティで以下のコードを使用しました:

   strFav = new ArrayList<Integer>();

    if(strFav.size()>0)
        strFav.clear();
    SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
    for (int i = 1; i < 19; i++) {
        int favid = prefs.getInt("favid"+i, -1);
        if (favid != -1) 
        {
          strFav.add(i);
        }
    }

データ取得時に、すべての値を取得しています-1

なぜこれが起こっているのか、体は私を助けることができますか?多くのエントリを 1 としてコミットしましたが、まだ-1すべての結果を取得しています。

4

3 に答える 3

6

メソッドに関するドキュメントを参照してください。getPrefernces

このアクティビティにプライベートな設定にアクセスするためのSharedPreferencesオブジェクトを取得します。

したがって、アクティビティ間で設定を共有する場合はgetSharedPreferences、指定した名前で使用する必要があります。

于 2012-12-12T14:20:13.280 に答える
1

1 つのアプリの 2 つの異なるアクティビティで共有設定を使用していますか?

また、設定名を指定するか、マネージャーを使用してすべての設定を処理してみてください。

于 2012-12-12T14:16:09.903 に答える
0
editor.putInt("favid"+id, 1);

idが0に等しいのはどうですか?ここでは 1 から読んでいます

 for (int i = 1; i < 19; i++) {
于 2012-12-12T14:03:27.647 に答える