2012-10-02 37 views
2

我增加了地图片段与此代码:MonoDroid的:创建地图碎片

public class MapFragment : Fragment 
{ 
    private MapActivity map=null; 
    public override Android.Views.View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     return new FrameLayout(Activity); 
    } 

    public override void OnActivityCreated(Bundle savedInstanceState) 
    { 
     base.OnActivityCreated(savedInstanceState); 
     map = new MapView(Activity,"XXXXX-v0jt5Z-XXXXXX"); 
     //HOW TO ADD THE VIEW HERE??? 
    } 
} 

我的问题是,在单为Android怎么我的地图添加到视图。

注:在Java中我会写:

((ViewGroup)getView()).addView(map); 

脚注:此示例使用代码从Java MapFragment源代码:https://github.com/commonsguy/cw-omnibus/blob/master/Maps/NooYawkFragments/src/com/commonsware/android/mapfrags/MapFragment.java

+0

也看到http://stackoverflow.com/questions/5109336/mapview-in-a-fragment-honeycomb –

回答

0

地图不能被添加到片段作为,他们需要一个托管环境。

下面是一个MapFragment解决方案:

namespace BahaiResearch.com 
{ 
public class MyMapFragment : Fragment 
{ 
    // FROM http://stackoverflow.com/questions/5109336/mapview-in-a-fragment-honeycomb 
    private static String KEY_STATE_BUNDLE = "localActivityManagerState"; 

    public override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     Bundle state = null; 
     if (savedInstanceState != null) { 
      state = savedInstanceState.GetBundle(KEY_STATE_BUNDLE); 
     } 
     mLocalActivityManager = new LocalActivityManager(Activity, true); 
     mLocalActivityManager.DispatchCreate(state); 
    } 

    public override Android.Views.View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     //This is where you specify you activity class 
     Intent i = new Intent(Activity, typeof(SteamLocationMapActivity)); 
     Window w = mLocalActivityManager.StartActivity("tag", i); 
     View currentView=w.DecorView; 
     currentView.Visibility = ViewStates.Visible; 
     currentView.FocusableInTouchMode = true; 
     ((ViewGroup) currentView).DescendantFocusability = DescendantFocusability.AfterDescendants; 
     return currentView; 
    } 

    private LocalActivityManager mLocalActivityManager; 
    protected LocalActivityManager GetLocalActivityManager() { 
     return mLocalActivityManager; 
    } 


    public override void OnSaveInstanceState(Bundle outState) 
    { 
     base.OnSaveInstanceState(outState); 
     outState.PutBundle(KEY_STATE_BUNDLE,mLocalActivityManager.SaveInstanceState()); 
    } 

    public override void OnResume() 
    { 
     base.OnResume(); 
     mLocalActivityManager.DispatchResume(); 

    } 

    public override void OnPause() 
    { 
     base.OnPause(); 
     mLocalActivityManager.DispatchPause(Activity.IsFinishing); 
    } 

    public override void OnStop() 
    { 
     base.OnStop(); 
     mLocalActivityManager.DispatchStop(); 
    } 
} 
}