在一个碎片中引用 SupportFragmentManager。

5
我正在使用Xamarin编写一个Google Maps应用程序,并已成功扩展了类以使用Android.Support.V4.App.FragmentActivity
现在,我想将Android.Support.V4.App.FragmentActivity更改为Android.Support.V4.App.Fragment,以便我可以拥有一个包含Google地图片段的ViewPager
由于我现在已将该类更改为扩展自Android.Support.V4.App.Fragment,因此无法引用SupportFragmentManager
以下是我的代码:
private void InitMapFragment()
{
    _mapFragment = SupportFragmentManager.FindFragmentByTag("map") as SupportMapFragment;
    if (_mapFragment == null)
    {
        GoogleMapOptions mapOptions = new GoogleMapOptions()
            .InvokeMapType(GoogleMap.MapTypeNormal)
            .InvokeZoomControlsEnabled(true)
            .InvokeCompassEnabled(true);

        FragmentTransaction fragTx = SupportFragmentManager.BeginTransaction();
        _mapFragment = SupportMapFragment.NewInstance(mapOptions);
        fragTx.Add(Resource.Id.map, _mapFragment, "map");
        fragTx.Commit();
    }
}

如何在Android.Support.V4.App.Fragment中引用SupportFragmentManager

提前感谢。

2个回答

5

从Fragment中,您可以使用getFragmentManager()getChildFragmentManager()(如果您有嵌套的Fragments)来获取FragmentManager。但是,您仍然需要将Activity扩展为FragmentActivity,以便在其中放置ViewPager。或者您可以像这样:

enter image description here

因此,您稍后可以用其他Fragment替换MainFragment。


3
我该如何调用 SupportFragmentManager,而不是 FragmentManager? - user3548779
3
从一个 Fragment 中,您可以使用 getActivity().getSupportFragmentManager() 方法获取所在 Activity 的 SupportFragmentManager。 - ILovemyPoncho

0
可能你的MainActivity类继承自ComponentActivity,那么请将其改为AppCompatActivity,因为supportFragmentManager是由AppCompatActivity类支持的。 这不会对你之前的代码造成太大的影响。
如果应用程序崩溃,请使用FragmentActivity来继承,而不是AppCompatActivity。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接