【发布时间】:2014-09-09 10:06:49
【问题描述】:
我刚刚使用 Facebook 为 Android 提供的 SDK 实现了好友选择器。一切似乎都运行良好,除非用户想要返回选择器并编辑他们的朋友选择。我能够获取先前选择的朋友,并在friendPickerFragment 上调用setSelection(它接收List 对象,通过Log.d 确认)。但是,朋友们没有被预选!在我的 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 ......可能会强制重新加载数据。有没有人有让这个工作的经验?我现在很难过。提前致谢。
【问题讨论】:
-
我找到了这个thread,它准确地展示了我在做什么,但是我无法获得任何预选的朋友。但是,我可以看到
public void setSelectionByIds(List<String> userIds)方法正在处理我发送给它的用户 ID。只是不确定为什么 UI 不合作。 -
好的,所以我一直跟踪到 facebook sdk 类
PickerFragment在那里我可以看到正确的用户 ID 被正确切换:@Override void toggleSelection(String id)但是为什么 UI (即,ListItem 复选框)不更新????!!!!!!在selectedIds.add(id);告诉 UI 更新之后会发生什么? -
我将 Facebooks FriendPickerSample 添加到我的工作区,运行它,它可以按预期工作,之前选择的用户仍然被选中...我尝试了它的实现,但没有运气。我注意到每次启动选择器时我的 savedInstanceState 都是空的,所以我猜这与问题有关,因为我每次都在创建一个新的选择器......
-
好的,所以我的朋友选择器片段似乎每次都被实例化,而不是从片段管理器中提取......不知道为什么会这样,但可能是问题。
-
所以我发现 FragmentManager 没有保留片段?!当我无法 getFragmentManager().getFragments() 它返回 null...
标签: android facebook facebook-graph-api multi-friend-selector