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