如何在运行时使用ChildFragmentManager替换片段,并且该片段没有PagerSlidingAbstrip Xamarin.Android标题

如何在运行时使用ChildFragmentManager替换片段,并且该片段没有PagerSlidingAbstrip Xamarin.Android标题,android,android-fragments,xamarin.android,android-viewpager,Android,Android Fragments,Xamarin.android,Android Viewpager,我想在运行时使用其他片段更改寻呼机布局,但不使用PagerSlidingTastrip标题。怎么做,我能做到。 第二种方法。我可以在另一个片段中调用方法home片段 这里是家庭布局 <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:

我想在运行时使用其他片段更改寻呼机布局,但不使用PagerSlidingTastrip标题。怎么做,我能做到。 第二种方法。我可以在另一个片段中调用方法home片段

这里是家庭布局

     <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_marginBottom="50dp"
            android:id="@+id/SlidingStrips"
            android:layout_marginTop="10dp"
            android:layout_below="@id/AcountBalance">
     <com.refractored.PagerSlidingTabStrip
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:pstsPaddingMiddle="true"
        app:pstsDividerWidth="1dp"
        app:pstsDividerPadding="5dp"
        app:pstsDividerColor="#50FFFFFF"
        android:textColor="#50FFFFFF"
        app:pstsTextColorSelected="@android:color/white"
        app:pstsIndicatorColor="@android:color/white"
        app:pstsUnderlineColor="@android:color/white" />
<!--Change this to true if you want to center items-->
              
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        tools:context=".HomeFragmentLayout" />
           
        </LinearLayout>

我是如何在这里添加片段的,是与父片段一起添加的ChildFragments这两个片段添加了两个带有小时和天选项卡的选项卡

 public class HomeFragment : Fragment, IOnTabReselectedListener, ViewPager.IOnPageChangeListener
    {
        View view;
        private MyPagerAdapter adapter;
        private int count = 1;
        private int currentColor;
        List<Android.Support.V4.App.Fragment> fragments = new List<Android.Support.V4.App.Fragment>();
        public static ViewPager pager;
        private PagerSlidingTabStrip tabs;

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

            // Create your fragment here
        }

        public static HomeFragment NewInstance()
        {
            var frag1 = new HomeFragment { Arguments = new Bundle() };
            return frag1;
        }


        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {

            base.OnCreateView(inflater, container, savedInstanceState);
            if (view == null)
            {
                view = inflater.Inflate(Resource.Layout.HomeFragmentLayout, container, false);
             
                return view;
            }
            else
            {

                return view;
            }

        
        }
        public override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            base.OnViewCreated(view, savedInstanceState);
            try
            {
                fragments.Add(new HourlyFragment());
                fragments.Add(new DayFragment());
             
                adapter = new MyPagerAdapter(ChildFragmentManager, fragments);
                pager = view.FindViewById<ViewPager>(Resource.Id.pager);
                tabs = View.FindViewById<PagerSlidingTabStrip>(Resource.Id.tabs);
                pager.Adapter = adapter;
                tabs.SetViewPager(pager);

                var pageMargin = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 4, Resources.DisplayMetrics);
                pager.PageMargin = pageMargin;
                pager.CurrentItem = 0;
                tabs.OnTabReselectedListener = this;
                tabs.OnPageChangeListener = this;
              
            }
            catch (System.Exception ex)
            {

               
            }
        
        }
       .// public  void ReplaceFragment(Fragment fragment)
        //{
        //    try
        //    {
        //        FragmentManager manager = ChildFragmentManager;
        //        FragmentTransaction transaction = manager.BeginTransaction();
        //        transaction.Add(Resource.Id.content_frame, fragment);
        //        transaction.Commit();
        //    }
        //    catch (System.Exception ex)
        //    {

               
        //    }


        //}

        public void OnTabReselected(int position)
        {
            Toast.MakeText(Context.ApplicationContext, "Tab reselected: " + position, ToastLength.Short).Show();
        }

        public void OnPageScrollStateChanged(int state)
        {
            Console.WriteLine("Page scroll state changed: " + state);
        }

        public void OnPageScrolled(int position, float positionOffset, int positionOffsetPixels)
        {
            Console.WriteLine("Page Scrolled");
        }

        public void OnPageSelected(int position)
        {
            Console.WriteLine("Page selected: " + position);
        }
        
    }
公共类HomeFragment:Fragment,IOnTabReselectedListener,ViewPager.IOnPageChangeListener
{
视图;
专用MyPagerAdapter适配器;
私有整数计数=1;
私人色彩;
列表片段=新列表();
公共静态视图寻呼机;
专用页滑动选项卡;
创建时公共覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//在这里创建你的片段
}
公共静态HomeFragment NewInstance()
{
var frag1=new HomeFragment{Arguments=new Bundle()};
返回帧1;
}
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
base.OnCreateView(充气机、容器、保存状态);
如果(视图==null)
{
视图=充气机。充气(Resource.Layout.HomeFragmentLayout,container,false);
返回视图;
}
其他的
{
返回视图;
}
}
创建视图时的公共覆盖无效(视图、捆绑包保存状态)
{
base.OnViewCreated(视图,savedInstanceState);
尝试
{
Add(新的HourlyFragment());
Add(newdayfragment());
适配器=新的MyPagerAdapter(ChildFragmentManager,片段);
pager=view.findviewbyd(Resource.Id.pager);
tabs=View.findviewbyd(Resource.Id.tabs);
pager.Adapter=适配器;
tabs.SetViewPager(寻呼机);
var pageMargin=(int)TypedValue.ApplyDimension(ComplexUnitType.Dip,4,Resources.DisplayMetrics);
pager.PageMargin=页边距;
pager.CurrentItem=0;
tabs.OnTabReselectedListener=this;
tabs.OnPageChangeListener=此;
}
catch(System.Exception-ex)
{
}
}
.//公共void ReplaceFragment(片段片段片段)
//{
//试一试
//    {
//FragmentManager=ChildFragmentManager;
//FragmentTransaction=manager.BeginTransaction();
//事务.Add(Resource.Id.content\u frame,fragment);
//Commit();
//    }
//catch(System.Exception-ex)
//    {
//    }
//}
已重新选择公共位置(内部位置)
{
Toast.MakeText(Context.ApplicationContext,“重新选择选项卡:”+position,ToastLength.Short).Show();
}
公共无效OnPageScrollStateChanged(int状态)
{
Console.WriteLine(“页面滚动状态更改:“+状态”);
}
已滚动页面上的公共无效(int-position、float-positionOffset、int-positionOffsetPixels)
{
Console.WriteLine(“页面滚动”);
}
已选择页面上的公共无效(内部位置)
{
Console.WriteLine(“所选页面:+位置”);
}
}
这是寻呼机适配器

public class MyPagerAdapter : FragmentPagerAdapter
    {
        List<Android.Support.V4.App.Fragment> fragments;
        private readonly string[] Titles =
        {
            "Hour", "Day"
        };

        public MyPagerAdapter(FragmentManager fm, List<Android.Support.V4.App.Fragment> fragments) : base(fm)
        {
            this.fragments = fragments;

        }
        public override ICharSequence GetPageTitleFormatted(int position)
        {
      
            return new String(Titles[position]);
        }

   
        //}
        public override int Count { get { return fragments.Count; } }

        public override Fragment GetItem(int position)
        {
            return fragments[position];
        }

        public override long GetItemId(int position)
        {
            return base.GetItemId(position);
        }
       
}
公共类MyPagerAdapter:FragmentPagerAdapter
{
列出片段;
私有只读字符串[]标题=
{
“小时”、“天”
};
公共MyPagerAdapter(FragmentManager fm,列出片段):基本(fm)
{
this.fragments=片段;
}
公共覆盖ICharSequence GetPageTitleFormatted(内部位置)
{
返回新字符串(标题[位置]);
}
//}
公共重写int Count{get{return fragments.Count;}}
公共重写片段GetItem(int位置)
{
返回碎片[位置];
}
公共覆盖长GetItemId(int位置)
{
返回base.GetItemId(位置);
}
}

假设您需要在HomeFragment中调用替换方法,您可以执行以下操作

在您的MyPagerAdapter类中添加以下代码(如何在运行时替换片段):

在另一个片段(例如单击事件)中,您可以调用replace方法,该方法位于HomeFragment中,如下所示:

 private void Button_Click(object sender, EventArgs e)
    {
        foreach (Android.Support.V4.App.Fragment fragment in Activity.SupportFragmentManager.Fragments)
        {
            if (fragment is HomeFragment)
            {
                ((HomeFragment)fragment).ReplaceFragment();
            }
        }
       
    }
  public void ReplaceFragment()
    {
        fragments[0] = new NewFragment(); //suppose you want to replace the first HourlyFragment
        fragments[1] = new DayFragment();
        adapter.setFragments(fragments);


    }
 private void Button_Click(object sender, EventArgs e)
    {
        foreach (Android.Support.V4.App.Fragment fragment in Activity.SupportFragmentManager.Fragments)
        {
            if (fragment is HomeFragment)
            {
                ((HomeFragment)fragment).ReplaceFragment();
            }
        }
       
    }