从自定义偏好设置获取Activity对象

7
我正在尝试将Facebook Connect集成到我的Android应用程序中。互联网上所有的示例都是从Android活动创建连接。我正在做一些不同的事情,用户可以从自定义首选项配置其与Facebook的连接。当我为Twitter和Foursquare做这件事时,我取得了成功。然而,方法Facebook.authorize需要一个Activity作为参数,由于我在首选项内部,因此无法找到任何对Activity对象的引用。
所以我的问题是,如何在首选项内获取Activity的引用?
谢谢大家
T

你能否发布一小段代码 - 只要足以说明你目前所尝试的内容? - Richard Ev
2
Richard...我成功修复了它。我只是对上下文对象(Activity)应用了一个转换,它正常工作了。不确定这是否是实现此目的的正确方法,但只要它能正常工作,我就没问题!谢谢 - Thiago
3个回答

9
我可以通过将Context对象强制转换为Activity来获取Activity的引用。
Activity activity = (Activity) context;

或者使用自定义活动,您也可以做到这一点。
SettingsActivity activity = (SettingsActivity) context;

不是每次都是这样的,例如请参考这个答案 - Dimitar

4

这是一个老问题,不过我使用以下函数与com.android.support:preference偏好设置片段:

public static Activity getPrefActivity(Preference pref)
{
    Context c = pref.getContext();
    if (c instanceof ContextThemeWrapper)
    {
        if (((ContextThemeWrapper) c).getBaseContext() instanceof Activity)
            return (Activity) ((ContextThemeWrapper) c).getBaseContext();
    }
    else if (c instanceof Activity)
        return (Activity) c;
    return null;
}

0

假设您有一个名为MyActivity的活动,您可以直接使用MyActivity.class吗?


我尝试了这个...但是我收到了一个错误信息,像这样:"Facebook中的authorize(Activity, String[], int, Facebook.DialogListener)方法不适用于参数(Class<CustomPreferencesActivity>, String[], int, FacebookPreference.FbLoginDialogListener)"...而我的调用方法是这样的"mFacebook.authorize(CustomPreferencesActivity.class, ApplicationData.FACEBOOK_PERMISSIONS, -1, new FbLoginDialogListener());" - Thiago

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接