Java 在将片段添加到“活动”之前为其展开视图

Java 在将片段添加到“活动”之前为其展开视图,java,android,android-fragments,Java,Android,Android Fragments,我有一个活动在两个片段之间切换:一个显示地图,另一个显示列表 当活动首次启动时,地图片段将添加到FrameLayout中,如下所示: getSupportFragmentManager() .beginTransaction() .replace(R.id.content_frame, mapFragment) .commit(); 在这种情况下,第二个列表片段还没有膨胀。每当用户浏览地图时,我希望列表片段根据用户在地图上平移的位置进行更新 所以

我有一个活动在两个片段之间切换:一个显示地图,另一个显示列表

当活动首次启动时,地图片段将添加到FrameLayout中,如下所示:

getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.content_frame, mapFragment)
        .commit();
在这种情况下,第二个列表片段还没有膨胀。每当用户浏览地图时,我希望列表片段根据用户在地图上平移的位置进行更新

所以基本上,我想做一些

listFragment.updateList(...);
然而,由于列表片段的视图还没有膨胀,我还不能更新它的视图。有没有一种方法可以做到这一点,而不必等到我将列表片段添加到FrameLayout


基本上,我的最终目标是在片段之间实现流畅的过渡;当用户切换到列表视图时,我希望视图尽快更新(如果在将视图添加到活动之前更新视图,则会发生这种情况)。

我认为您可以将更新后的
列表存储在框架中,如下所示:

public class yourFragment extends Fragment{
      private ArrayList<Object> yourList;
}
public类yourFragment扩展了Fragment{
私有数组列表;
}

当您更新列表时,您可以检查
是否(getView()!=null)
->更新您的
ListView
或设置
yourList=yourUpdateList
。然后,在片段的
onCreateView
中,检查
yourList
是否为空,如果不为空,只需将数据设置到列表片段中的
ListView
中,该列表片段中有一个指向Presenter的链接,该链接将为片段提供数据

public interface ListPresenter {
     public List<Object> getObjects();
}
然后,只要您想获取数据,就调用presenter方法,它将始终可以从活动中获得

还可以添加贴图交互器来更新对象

public interface MapInteractor {
    void setObjects(List<Object> objects);
}

您不能同时在屏幕上显示这两个
片段吗?
public interface MapInteractor {
    void setObjects(List<Object> objects);
}
public class MyActivity extends Activity implements ListPresenter,
                                                    MapInteractor {
...
@Override
public List<Object> getObjects() {
    return currentObjects;
}

@Override
public void setObjects(List<Object> objects) {
     currentObjects = objects;
}
getSupportFragmentManager()
    .beginTransaction()
    .add(R.id.content_frame, listFragment)
    .hide(listFragment)
    .commit();