Android DialogFragment将数据保留在内存中,即使在调用dismise()之后也是如此

Android DialogFragment将数据保留在内存中,即使在调用dismise()之后也是如此,android,android-fragments,android-dialogfragment,Android,Android Fragments,Android Dialogfragment,我在这里的行为很奇怪。从我的main活动类中,我调用我的对话框片段: EndRoundDialogFragment df = new EndRoundDialogFragment(myVO); df.show(fragmentManager, "end_round_dialog_fragment"); 此DialogFragment的构造函数很简单: public EndRoundDialogFragment(UserVO vo) { this.userVO = vo; } 这个片段

我在这里的行为很奇怪。从我的
main活动
类中,我调用我的
对话框片段

EndRoundDialogFragment df = new EndRoundDialogFragment(myVO);
df.show(fragmentManager, "end_round_dialog_fragment");
此DialogFragment的构造函数很简单:

public EndRoundDialogFragment(UserVO vo) {
    this.userVO = vo;
}
这个片段里面有一个谷歌地图片段。所以我基本上做的是:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.end_round_dialog, container, false);

    mMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map_result)).getMap();
    mMap.setIndoorEnabled(false);
    mMap.setMyLocationEnabled(false);
    mMap.setTrafficEnabled(false);

    buttonClose.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            mListener.onEndDialogClosed();
            userVO = null;
            dismissAllowingStateLoss();
        }
    });

//Rest of the code is manipulating Markers in this map.
所以,当用户单击关闭按钮时,我将关闭对话框,并确认状态丢失。我甚至将VO设置为null

如您所见,我的
活动
实现了对话框的侦听器
onendialogclosed()
。此方法的实现是:

@Override
public void onEndDialogClosed() {
    Fragment prev = fragmentManager.findFragmentByTag("end_round_dialog_fragment");
    if(prev != null)
        fragmentManager.beginTransaction().remove(prev).commit();
    new Get5PointsTask().execute();
}
所以当它关闭时,我也移除了整个片段

我还为此对话框片段添加了以下内容,以确保确实从代码中删除了Google Maps片段:

@Override
public void onDestroyView() {
    super.onDestroyView();
    Fragment f = (MapFragment) getFragmentManager().findFragmentById(R.id.map_result);
    if (f != null) {
        getFragmentManager().beginTransaction().remove(f).commit();
    }
}
在调试过程中,我验证了变量
f
不是null,并且
remove()
代码确实被调用

当我再次实例化带有新VO数据的
对话框片段时,Google Maps显示的是新数据和旧数据。只是没有重置去内存

有什么想法吗

编辑1:

我发现了问题所在。只是没有在活动的
oneddialogclosed()
方法中擦除我的VO。愚蠢的我

谢谢大家,希望这段代码能帮助其他人。

所以,我解决了这个问题。 我只是没有重新实例化在
活动中保存用户数据的VO。。。因此,当打开
对话框fragment
时,它会保存新的和旧的。这么简单,这么愚蠢


谢谢

请写一个答案,而不是编辑,这样人们就可以将其视为已解决的问题并相应地使用它;那是我的安排。