понять PreferenceActivity - PullRequest
       0

понять PreferenceActivity

0 голосов
/ 12 января 2012
public class SettingsActivity extends PreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    /* Some initializations */
    LinearLayout layout = new LinearLayout(this);
    layout.setOrientation(LinearLayout.VERTICAL);

    ListView listView = new ListView(this);
    listView.setId(android.R.id.list);
    listView.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.FILL_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT, 1));
    layout.addView(listView);

    this.setContentView(layout);
    /* Preferences time! (we build the preferences) */
    Preference version = getPreference("My School Manager", "Version 2.0",
            null);
    Preference author = getPreference("Author", "Simone Casagranda", null);
    Preference marketLink = getPreference("Android market",
            "View all my apps :)",
            new Intent(Intent.ACTION_VIEW, Uri
                    .parse("http://market.android.com/details?id="
                            + "it.trento.alchemiasoft.casagranda.simone")));

    CheckBoxPreference check = new CheckBoxPreference(this);
    check.setTitle("Checkbox");
    check.setSummary("Example of checkbox");

    DialogPreference license = new MyDialogPreference(this, "License",
            "This is the license for...bla bla");

    /* Now we add the preferences to the preference screen */
    PreferenceScreen preferenceScreen = this.getPreferenceManager()
            .createPreferenceScreen(this);
    addPreferenceCategory(preferenceScreen, "Preferences Tutorial",
            version, author, marketLink, check, license);
    this.setPreferenceScreen(preferenceScreen);
}

private boolean addPreferenceCategory(PreferenceScreen preferenceScreen,
        String titleCategory, Preference... preferences) {
    boolean addPreference = false;
    for (Preference preference : preferences) {
        if (preference != null)
            addPreference = true;
    }
    if (addPreference) {
        PreferenceCategory preferenceCategory = new PreferenceCategory(this);
        preferenceCategory.setTitle(titleCategory);
        preferenceScreen.addPreference(preferenceCategory);
        for (Preference preference : preferences) {
            if (preference != null)
                preferenceCategory.addPreference(preference);
        }
        return true;
    } else
        return false;
}

private Preference getPreference(String title, String summary, Intent intent) {
    Preference pref = new Preference(this);
    pref.setTitle(title);
    pref.setSummary(summary);
    if (intent != null)
        pref.setIntent(intent);
    return pref;
}

public class MyDialogPreference extends DialogPreference {
    public MyDialogPreference(Context context, String title, String text) {
        super(context, null);
        this.setTitle(title);
        this.setDialogMessage(text);
    }
}

}

В этом фрагменте кода предпочтения перечислены в виде списка. Разве ему не нужен адаптер? Я не вижу, что данные поступают в просмотр списка. Как насчет этого экрана настроек? Это необходимо для настройки предпочтений?

1 Ответ

1 голос
/ 12 января 2012

PreferenceActivity обрабатывает настройки самостоятельно. Адаптер встроен в PreferenceActivity, поэтому вам не нужно об этом беспокоиться. Также вместо того, чтобы создавать свои предпочтения программно, вы можете использовать XML, чтобы сделать то же самое. Проверьте этот урок .

Предпочтительная деятельность снимает много боли. Представьте, что вы пишете код для подключения всех действий пользовательского интерфейса, таких как показ диалога, изменение состояний ваших предпочтений и их сохранение. Предпочтительная деятельность снимает эту боль с вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...