我有一个应用程序,它有一个主要活动和几个片段,通过导航抽屉导航到。
我在我的应用程序中使用了两个地图片段,如果我从片段映射A然后返回到片段映射B,这似乎会导致问题。在frgamnet中我失去了对它们的控制地图通常只是显示了最后一个片段的地图。
这似乎是一个众所周知的问题。
google maps api bug report with issue
我的解决方案就是在上面四分之一时间是在最小化地图A之前加载地图B这导致问题不会发生,因为它不会占用屏幕空间。
public void hideStupidMaps() {
mMapView.getLayoutParams().height = 1;
mMapView.getLayoutParams().width = 1;
mMapView.invalidate();
mMapView.requestLayout();
}
上面的方法是在我的Gmap片段类中。我想从myMain Activity类中调用它。在导航抽屉代码中。我的问题是如何从主要活动中调用frgments方法。特别是在改变该片段视图时。我需要将视图和它扩展到上面的方法吗?
答案 0 :(得分:0)
您可以在单个活动中组合多个fragments来构建多窗格UI,并在多个活动中重用片段。片段必须始终嵌入到活动中,片段的生命周期直接受主机活动生命周期的影响。
要从onCreateView()
返回布局,可以从XML中定义的布局资源中对其进行充气。为了帮助您这样做,onCreateView()
提供了一个LayoutInflater对象。
public static class ExampleFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.example_fragment, container, false);
}
}
以下是如何将一个片段替换为另一个片段,并保留后栈中的先前状态:
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();