在片段中引用SupportFragmentManager

问题描述 投票:0回答:2

我正在 Xamarin 中编写 Google 地图应用程序,并已成功扩展该类以使用

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();
    }
}

如何在

SupportFragmentManager
中引用
Android.Support.V4.App.Fragment

提前致谢

android android-fragments android-viewpager xamarin supportmapfragment
2个回答
5
投票

从 Fragment 中,如果您有嵌套片段,您可以使用

getFragmentManager()
getChildFragmentManager()
获取片段管理器,但是您仍然需要 Activity 来扩展 FragmentActivity,您可以在其中包含 viewpager。或者你可以有这样的东西:

enter image description here

这样您以后就可以用其他 Fragment 替换 MainFragment。


0
投票

可能你的MainActivity类继承自ComponentActivity,然后将其更改为AppCompatActivity 因为 AppCompatActivity 类支持 supportFragmentManager。 这不会对您以前的代码造成相当大的损害

© www.soinside.com 2019 - 2024. All rights reserved.