Java恢复旧的变量值

时间:2017-06-27 17:44:39

标签: java android-fragments

在我的应用程序中,我将列表从一个片段传递到另一个片段。我想在这个其他片段中使用这个列表,这不应该太难。在这个片段的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在此方法之后接收到另一个回调时,如何更改?

0 个答案:

没有答案