我正在构建某种向导来在同步和管理帐户中创建用户帐户。我使用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的情况下显示它们?
答案 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函数调用的标准活动。