在我的应用程序中,我将列表从一个片段传递到另一个片段。我想在这个其他片段中使用这个列表,这不应该太难。在这个片段的onCreateView
中,我有这段代码:
userList = getArguments().getParcelableArrayList("userList");
此userList
根据用户在上一个片段中按下的按钮而有所不同。它返回正确的ArrayList,但是当我想要在类中进一步访问列表时,列表的内容突然变为已加载的上一个列表的内容。
在同一片段中:
public void onMapReady(GoogleMap googleMap) {
FirebaseHelper.photoDelegate = this;
FirebaseHelper.initializeMapMarkers(currentUser, false, false, null);
... userList
的值仍然与onCreateView
中的值相同。当片段类从initializeMapMarkers
收到回调时,该值已更改为第一次调用片段时的值。
一些澄清代码:
public class MapFragment extends Fragment implements OnMapReadyCallback, CallbackGroupUpdate,
PhotoInterface {
private ArrayList<User> userList = new ArrayList<>();
private List<String> userIDs;
private User currentUser;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_map, container, false);
(...)
userList = getArguments().getParcelableArrayList("userList"); // Get information of users in group
currentUser = getArguments().getParcelable("currentUser"); // Get information of current user
(...)
return view;
}
(...)
@Override
public void onMapReady(GoogleMap googleMap) {
(...)
FirebaseHelper.photoDelegate = this;
FirebaseHelper.initializeMapMarkers(currentUser, false, false, null);
然后initializeMapMarkers
运行并调用MapFragment
类中的回调函数:
@Override
public void initializeCurrentUserMarker(User userData) {
(...)
// Initialize markers for other users
FirebaseHelper.getOtherUserMapMarkers(userList); < Value is still the same as in onCreateView }
再次:FirebaseHelper
public static void getOtherUserMapMarkers(final ArrayList<User> userList) {
int i = 0;
ArrayList<User> initializedUsers = new ArrayList<>();
for (User user : userList) {
i++;
if (i == userList.size()) {
initializeMapMarkers(user, true, true, initializedUsers);
} else {
initializeMapMarkers(user, true, false, initializedUsers);
}
}
}
在此之后,userList
不再执行任何操作,那么当MapFragment
在此方法之后接收到另一个回调时,如何更改?