如何在视图中显示首选项

时间:2011-01-10 00:49:13

标签: android preferences

我正在构建某种向导来在同步和管理帐户中创建用户帐户。我使用ViewFlipper,我的活动必须是AccountAuthenticatorActivity。这说明它也意味着我不能继承PreferenceActivity。

所以我查看了PreferenceActivity的代码,我相信应该有一个继承自ListView的PreferenceView。据我所知,PreferenceActivity的Activity部分并不是真正需要的。

虽然PreferenceManager真的阻止了我。

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

这个函数意味着我们可以使用new new来设置PreferenceManager。显然,sdk隐藏了PreferenceManager的构造函数。我有点困惑。

有没有办法让我的首选项膨胀并在没有PreferenceActivity的情况下显示它们?

2 个答案:

答案 0 :(得分:1)

  

有没有办法让我的首选项膨胀并在没有PreferenceActivity的情况下显示它们?

不通过SDK,AFAIK。

由于您既没有在此向导中显示也没有修改首选项(“我正在构建某种向导以在同步和管理帐户中创建用户帐户”),我不知道您为什么要使用{{1}无论如何,对象。只需使用常规小部件。

答案 1 :(得分:0)

是的,发起人可能需要是AccountAuthenticatorActivity,但我认为反过来可以启动它想要的任何活动。 AccountAuthenticatorActivity doues不一定要显示自己的GUI。

这就是我们这样做的方式;收到启动偏好活动的addAccount请求。解析意图以查看是否请求新帐户并显示适当的GUI。向导完成后,生成的帐户将通过结果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函数调用的标准活动。