ここで検索してサンプルを見ましたが、本質的に単純な問題に対する答えはまだ見つかりません。前の ListPreference で行った選択に応じて、CheckBoxPreferences の設定画面をコードで動的に構築したいと考えています。これは、クリック リスナーで単純な設定をクリックすると表示されます。チェックボックスのリストと数は、ケースごとに異なります。
これまでのところ、onClick リスナーの概念をテストするための簡単なコードですが、チェック ボックスの設定画面を表示するにはどうすればよいでしょうか。そうでない理由を簡単に説明する必要があります。私は何を間違っていますか?
私のxmlコードの一部:
<PreferenceCategory android:title="Filters">
<PreferenceScreen android:key="FilterScreen"
android:title="Filters" android:summary="Click to change filter settings">
<ListPreference android:title="Filter type"
android:summary="Set to: Gliding"
android:key="filterType"
android:defaultValue="0"
android:entries="@array/filterTypeOptions"
android:entryValues="@array/filterTypeValues" />
<CheckBoxPreference android:title=""
android:summary="Include Aerodrome Notams"
android:defaultValue="false" android:key="filterIncludeAerodrome" />
<CheckBoxPreference android:title=""
android:summary="Delete night-time Notams"
android:defaultValue="true" android:key="filterDeleteNighttime" />
<ListPreference android:title="Select category to change"
android:summary="Set to: Airspace organisation"
android:key="filterCategory"
android:defaultValue="0"
android:entries="@array/filterCategoryOptions"
android:entryValues="@array/filterCategoryValues" />
<Preference android:title="Show filters for category"
android:summary="Click to choose subjects to delete"
android:key="filterShow" />
</PreferenceScreen>
</PreferenceCategory>
「カテゴリのフィルタを表示」の内容は、「フィルタの種類」と「変更するカテゴリを選択」の設定によって異なります。
これは、「フィルターを表示」クリック リスナー用に用意した簡単なテスト コードです (要点を示すために省略しています)。
public class Settings extends PreferenceActivity
implements OnSharedPreferenceChangeListener
{
------
public static final String KEY_FILTER_SHOW = "filterShow";
------
private Preference mFilterShow;
------
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.settings);
// Get a reference to the preferences
------
mFilterShow = (Preference)findPreference(KEY_FILTER_SHOW);
------
// Set the click listener for Show Filter options
mFilterShow.setOnPreferenceClickListener(new OnPreferenceClickListener()
{
public boolean onPreferenceClick(Preference pref)
{
Context ctx = pref.getContext();
PreferenceScreen screen =
pref.getPreferenceManager().createPreferenceScreen(ctx);
CheckBoxPreference cb1 = new CheckBoxPreference(ctx);
cb1.setTitle("This is cb1");
cb1.setKey("cb1_key");
cb1.setDefaultValue(false);
screen.addPreference(cb1);
return true;
}
});
私が間違ったこと、または私が見逃したことに対する簡単な答えがあるはずです! 助けてください...