2012-12-20 105 views
0

我试图在片段的onActivityCreated中的一个relativeLayout中添加MapView(org.osmdroid.views.MapView)。但它不起作用。这个片段由ShrlockFragmentActivity启动。 如何让它工作?Mapview osmdroid在片段中不可见

public class CommuneFragment extends SherlockFragment { 

Context mContext = getActivity(); 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
} 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState) ; 
    return inflater.inflate(R.layout.commune_map_fragment, container, false); 
} 


@Override 
public void onActivityCreated(final Bundle savedState) { 
    super.onActivityCreated(savedState); 
    mContext=getActivity(); 

    View mView = getView(); 

    //Create the OSM view 
    MapView mapView = new MapView(mContext, null); 
    //enable zoom in and out on the OSM 
    mapView.setClickable(true); 
    mapView.setBuiltInZoomControls(true); 

    RelativeLayout RL= (RelativeLayout) getActivity().findViewById(R.id.rl); 
    RL.addView(mapView); 
    } 

回答

0

工作,你可以简单的返回在onCreateView方法的地图视图。

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
super.onCreateView(inflater, container, savedInstanceState); 
//init mapView... 
return mapView; 
} 

然后,在你fragmentActivity,你做去fragmentTransaction,你把内容的FrameLayout这个观点。

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.container, new CommuneFragment()); 
      ft.commit(); 

对不起,我的英语,我希望它可以帮助。

2

那是因为你还没有相对布局前加入提供了宽度和高度的地图视图:

RelativeLayout RL= (RelativeLayout) getActivity().findViewById(R.id.rl); 
    RL.addView(mapView); 

所有你需要的是提供的MapView宽度和高度为:

this.mMapView.setLayoutParams(new LayoutParams(
      LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 

用这个解决了我的类似问题。谢谢