Here is a solution that worked for me. I am expanding a standard FriendPickerFragment file.
public class FriendPickerFragment2 extends FriendPickerFragment { SelectionStrategy selectionStrategy; String mPreSelectedIDs; public FriendPickerFragment2(Bundle args) { super(args); } @Override SelectionStrategy createSelectionStrategy() { selectionStrategy = getMultiSelect() ? new MultiSelectionStrategy() : new SingleSelectionStrategy(); return selectionStrategy; } public void showInitialSelection() { Bundle bundle = new Bundle(); bundle.putString(this.MULTI_SELECT_BUNDLE_KEY, mPreSelectedIDs); selectionStrategy.readSelectionFromBundle(bundle, this.MULTI_SELECT_BUNDLE_KEY); adapter.notifyDataSetChanged(); } public void setInitialSelection(String IDs) { mPreSelectedIDs = IDs; }
}
I use FriendPickerFragment2 as a regular FriendPickerFragment. In OnCreate, I do the following:
FragmentManager fm = getSupportFragmentManager(); if (savedInstanceState == null) { final Bundle args = getIntent().getExtras(); friendPickerFragment = new FriendPickerFragment2(args); friendPickerFragment.setInitialSelection(pickedUsersString()); fm.beginTransaction() .add(R.id.friend_picker_fragment, friendPickerFragment) .commit(); } else { friendPickerFragment = (FriendPickerFragment2) fm.findFragmentById(R.id.friend_picker_fragment); }
Here, selectedUsersString is the identifier code string.
The last point is to add one line to OnStart:
protected void onStart() { super.onStart(); try { friendPickerFragment.loadData(false); friendPickerFragment.showInitialSelection(); } catch (Exception ex) { onError(ex); } }
This solution worked for me.
source share