2011-06-23 4 views
2

タグを表示するためにPreferenceGroupの下に新しいCheckBoxPreferenceを作成しようとしています。新しい環境設定を作成して永続化しますか?

for(Tag t : tags) { 
     pref = new CheckBoxPreference(FoodhunterCredentials.this); 
     boolean isChecked = wasChecked(t.getName()); 

     pref.setTitle(t.getName()); 
     pref.setSummary(t.getDescription()); 
     pref.setChecked(isChecked); 
     pref.setPersistent(true); 

     Log.d("Credentials", String.format("Adding checkbox %s -%schecked", t, isChecked ? " " : " not ")); 

     tagsGroup.addPreference(pref); 
    } 

しかし、アクティビティを閉じた後、新しいチェックボックスは消えてしまいます。新しく作成された設定を永続化する方法はありますか?明確にする:これは、定義された環境設定に新しい値を格納することではなく、新しい作成された環境設定を保存することです。

答えて

1

DBを使用してすべてのタグを保存できます(これが望ましい)。

それとも、あなたには、いくつかの理由でDBを使用しない場合は、次の方法でSharedPrefernecesをハックすることができます

  1. 「タグ」という名前の空の文字列のプリファレンスを作成します(これはで表示すべきではありませんあなたのPreferenceActivity)。
  2. ユーザーが新しいタグを追加すると、タグ名が「タグ」の文字列プリファレンスに追加され、保存されます。

たとえば、あなたの "タグ" の文字列がのように見えることがあり、 "javaの、アンドロイド、ヘルパー;ヨーロッパ"。重複チェックを行い、自分自身を解析する必要があります。あなたは、の方法であなたのPreferenceScreenをそれぞれのタグに対してCheckBoxPreferenceと自動的に設定する必要がありますが、あなたはすでにそれを行う方法を知っています。


はい、APIレベル11(Android 3.0)以降では、SharedPreferncesに文字列セットを使用できます。詳細は、getStringSetおよびputStringSetを参照してください。

+0

私はデフォルトの設定を使用しており、チェックボックスのカスタムダイアログを開きます。それは私が欲しいものではありませんが、仕事をしています。 – schlingel

1

XMLレイアウトファイルを問題にすることはできません。 SharedPreferences or Databaseに余分なチェックボックスがあるという事実を保存することができますが、あなたが望むことを行うための超クリーンな方法はありません。

関連する問題