如何在运行时使用ChildFragmentManager替换片段,并且该片段没有PagerSlidingAbstrip Xamarin.Android标题
我想在运行时使用其他片段更改寻呼机布局,但不使用PagerSlidingTastrip标题。怎么做,我能做到。 第二种方法。我可以在另一个片段中调用方法home片段 这里是家庭布局如何在运行时使用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:
<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();
}
}
}