Как отобразить настройки в представлении - PullRequest
1 голос
/ 10 января 2011

Я создаю своего рода мастера для создания учетных записей пользователей в Sync и Manage account. Я использую ViewFlipper, моя деятельность должна быть AccountAuthenticatorActivity. Это также означает, что я не могу наследовать PreferenceActivity.

Итак, я посмотрел в коде PreferenceActivity и считаю, что должно быть возможно иметь PreferenceView, наследующий от ListView. Насколько мне известно, часть активности PreferenceActivity на самом деле не нужна.

Хотя PreferenceManager действительно блокирует меня.

private PreferenceManager onCreatePreferenceManager() {
    PreferenceManager preferenceManager = new PreferenceManager(this, FIRST_REQUEST_CODE);
    preferenceManager.setOnPreferenceTreeClickListener(this);
    return preferenceManager;
}

Эта функция подразумевает, что мы можем установить PreferenceManager с помощью оператора new. По-видимому, SDK скрыть конструктор PreferenceManager. Я немного смущен.

Есть ли способ раздуть мои предпочтения и отобразить их без PreferenceActivity?

Ответы [ 2 ]

1 голос
/ 10 января 2011

Есть ли способ раздуть мои предпочтения и отобразить их без PreferenceActivity?

Не через SDK, AFAIK.

Поскольку вы не отображаете и не изменяете настройки в этом мастере («Я создаю какой-то мастер для создания учетных записей пользователей в Sync и Manage account»), я понятия не имею, почему вы захотите использовать объекты Preference , тем не мение. Просто используйте обычные виджеты.

0 голосов
/ 30 ноября 2012

Да, инициатором может быть AccountAuthenticatorActivity, но я предполагаю, что, в свою очередь, он может начать любое действие, которое захочет. AccountAuthenticatorActivity не обязательно должен показывать свой собственный графический интерфейс.

Вот как мы это делаем; получить запрос addAccount, который запускает действие предпочтения. Намерение анализируется, чтобы увидеть, запрашивается ли новая учетная запись, и отображается соответствующий графический интерфейс. После завершения работы мастера полученная учетная запись возвращается к AccountAuthenticatorActivity через результат Intent.

    /*
     * The user has requested to add a new account to the system. We return
     * an intent that will launch our login screen if the user has not
     * logged in yet, otherwise our activity will just pass the user's
     * credentials on to the account manager.
     */
    @Override
    public Bundle addAccount(AccountAuthenticatorResponse response,
            String accountType, String authTokenType,
            String[] requiredFeatures, Bundle options)
            throws NetworkErrorException {
        Bundle result = new Bundle();
        Intent i = new Intent(mContext, PrefsActivity.class);
        i.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE,
                response);
        i.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT,
                ServerPrefsFragment.class.getName());
        result.putParcelable(AccountManager.KEY_INTENT, i);
        return result;
    }

РЕДАКТИРОВАТЬ: Просто понял, что я не совсем ответил на вопрос. Решение, которое мы выбрали, чтобы сделать то, что вы хотите, на самом деле, как предложено ниже; не использует PreferenceActivity для мастера, но стандартное действие, вызываемое функцией addAccount, показанной выше.

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