Android-Facebook SDK-FriendPicker setSelected不起作用

战神

我只是使用Facebook提供的Android的SDK实现了朋友选择器。除了用户是否想返回选择器并编辑其好友选择之外,其他所有内容似乎都正常运行。我可以获取以前选择的朋友,并在friendPickerFragment(接收通过Log.d确认的List对象)上调用setSelection。但是,不会预先选择朋友!在我的PickerActivity中,我打电话给:

@Override
protected void onResume() {
    super.onResume();
    if (FRIEND_PICKER.equals(getIntent().getData())) {
        Log.d(LOG, "HERE");
        try {
            if (selectedFriends()!=null) {
                Log.d(LOG, "U HAVE FRIENDS: " + selectedFriends().size());
                friendPickerFragment.setSelection(selectedFriends());
            }
            friendPickerFragment.setFriendPickerType(FriendPickerType.TAGGABLE_FRIENDS);
            friendPickerFragment.loadData(false);
        } catch (Exception ex) {
            onError(ex);
        }
    }
}

我还尝试过仅调用setSelection,以为也许对loadData的调用正在清除选择项...但是仍然没有运气。我还注意到我的PickerActivity(由Scrumptious fb教程设计)在每次打开朋友选择器时都会调用onCreate……可能会强制重新加载数据。有没有人有使它工作的经验?此刻我很困惑。提前致谢。

战神

要理解此回复,您需要阅读我在上面原始问题下的评论。

我的发现:当您更改Facebook的FriendPickerFragment类型时FriendPickerType.TAGGABLE_FRIENDS,返回的数据将设置为不进行缓存。这意味着每次显示好友选择器时都会重新加载数据,由于某种原因,这导致重新加载完成后不会重新选择任何以前选择的好友。我仍然不确定为什么,因为FriendPickerFragment似乎仍然通过其preSelectedFriendIds List<String>对象引用了那些选定的朋友(因此,更好的解决方案可能是确定为什么会发生这种情况)。此外,如果您更改FriendPickerType.TAGGABLE_FRIENDS为了允许缓存,当您重新启动FriendPickerFragment时,您会立即看到您先前选择的朋友实际上是被选中的,但是FriendPickerFragment意识到它从缓存中加载了数据(即使只有一部分),这导致它刷新了数据!再次,重置先前选择的朋友!

解决方法:解决此问题的方法可能不是最好的方法,因为我确信FacebookFriendPickerType.TAGGABLE_FRIENDS出于某种原因将其设为不可缓存。我最初的想法是,因为如果从缓存中加载数据,则可能并不总是包含用户的完整朋友列表,或者可能只是要缓存的很多朋友(数据)。但是,我将类型切换为可缓存。然后,我boolean在FriendPickerFragment中添加了一个,指示这是否是首次加载数据。如果您遵循Facebook教程,您会看到他们使用名为的静态方法设置FriendPickerFragmentpopulateParameters(Intent intent, String userId, boolean multiSelect, boolean showTitleBar, boolean initialLoad)在启动FriendPicker之前,我先检查启动活动是否已显示FriendPicker。如果没有,则将initialLoad布尔值设置为true,否则,如果已经显示,则将初始布尔值设置为false。这个布尔值控制在Facebook的FriendPickerFragment私有类下的onLoadFinished()方法ImmediateLoadingStrategy

    private class ImmediateLoadingStrategy extends LoadingStrategy {
    @Override
    protected void onLoadFinished(GraphObjectPagingLoader<GraphUser> loader, SimpleGraphObjectCursor<GraphUser> data) {
        super.onLoadFinished(loader, data);
        // We could be called in this state if we are clearing data or if we are being re-attached
        // in the middle of a query.
        if (data == null || loader.isLoading()) {
            return;
        }
        if (data.areMoreObjectsAvailable()) {
            // We got results, but more are available.
            followNextLink();
        } else {
            // We finished loading results.
            hideActivityCircle();

            // If this was from the cache, schedule a delayed refresh query (unless we got no results
            // at all, in which case refresh immediately.
            if (data.isFromCache() && initialLoad==true) {
                loader.refreshOriginalRequest(data.getCount() == 0 ? CACHED_RESULT_REFRESH_DELAY : 0);
            }
        }
    }
}

请注意添加的检查&& initialLoad==true-(a)确保如果这是第一次显示friendspicker,则更新好友列表,以及(b)如果在此应用程序运行期间已经显示一次,则不会刷新。这样可以确保先前选择的朋友保持选中状态。

如果有人有更好的解决方案,我很想听听:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SDK 11之前的Android setWindowLayoutMode不起作用

来自分类Dev

Android SDK计时器不起作用

来自分类Dev

为什么“ Android版Facebook SDK入门”示例不起作用?

来自分类Dev

FaceBook共享在android中不起作用

来自分类Dev

Android Webview和Facebook登录不起作用

来自分类Dev

Android:使用getApplication()停留在ClassCastException上,试图集成Facebook Friendpicker示例

来自分类Dev

android:Facebook SDK AsyncTask错误

来自分类Dev

注销Facebook Android SDK

来自分类Dev

获取xmpp_login访问令牌在Facebook iOS SDK中不起作用

来自分类Dev

AppInviteDialog在Android Facebook SDK 4.0中不起作用

来自分类Dev

登录Facebook SDK 4 Android

来自分类Dev

Android Facebook SDK登录

来自分类Dev

FaceBook PHP API SDK:突然未发布参数“链接”并且/ me / feed不起作用

来自分类Dev

Android Facebook SDK AcccessToken问题

来自分类Dev

Facebook PHP SDK-当我将其放在函数中时,它不起作用

来自分类Dev

Facebook Javascript SDK重定向不起作用

来自分类Dev

Android Facebook SDK onUserInfoFetched方法不起作用

来自分类Dev

Android + Facebook SDK

来自分类Dev

FaceBook共享在android中不起作用

来自分类Dev

无法下载Android Facebook SDK

来自分类Dev

android:Facebook SDK AsyncTask错误

来自分类Dev

Android Facebook SDK graphuser unicode

来自分类Dev

Android-Facebook SDK-FriendPicker setSelected不起作用

来自分类Dev

Facebook Cognito Android示例不起作用

来自分类Dev

Facebook Post Like动作在Android中不起作用

来自分类Dev

使用android:drawableRight属性时CheckBox setSelected不起作用

来自分类Dev

Facebook SDK(3.8)在iOS9.2中不起作用

来自分类Dev

Android Facebook SDK AcccessToken问题

来自分类Dev

Facebook Android SDK 中的“公开应用”有什么作用?

Related 相关文章

  1. 1

    SDK 11之前的Android setWindowLayoutMode不起作用

  2. 2

    Android SDK计时器不起作用

  3. 3

    为什么“ Android版Facebook SDK入门”示例不起作用?

  4. 4

    FaceBook共享在android中不起作用

  5. 5

    Android Webview和Facebook登录不起作用

  6. 6

    Android:使用getApplication()停留在ClassCastException上,试图集成Facebook Friendpicker示例

  7. 7

    android:Facebook SDK AsyncTask错误

  8. 8

    注销Facebook Android SDK

  9. 9

    获取xmpp_login访问令牌在Facebook iOS SDK中不起作用

  10. 10

    AppInviteDialog在Android Facebook SDK 4.0中不起作用

  11. 11

    登录Facebook SDK 4 Android

  12. 12

    Android Facebook SDK登录

  13. 13

    FaceBook PHP API SDK:突然未发布参数“链接”并且/ me / feed不起作用

  14. 14

    Android Facebook SDK AcccessToken问题

  15. 15

    Facebook PHP SDK-当我将其放在函数中时,它不起作用

  16. 16

    Facebook Javascript SDK重定向不起作用

  17. 17

    Android Facebook SDK onUserInfoFetched方法不起作用

  18. 18

    Android + Facebook SDK

  19. 19

    FaceBook共享在android中不起作用

  20. 20

    无法下载Android Facebook SDK

  21. 21

    android:Facebook SDK AsyncTask错误

  22. 22

    Android Facebook SDK graphuser unicode

  23. 23

    Android-Facebook SDK-FriendPicker setSelected不起作用

  24. 24

    Facebook Cognito Android示例不起作用

  25. 25

    Facebook Post Like动作在Android中不起作用

  26. 26

    使用android:drawableRight属性时CheckBox setSelected不起作用

  27. 27

    Facebook SDK(3.8)在iOS9.2中不起作用

  28. 28

    Android Facebook SDK AcccessToken问题

  29. 29

    Facebook Android SDK 中的“公开应用”有什么作用?

热门标签

归档