我无法在FragmentStatePagerAdapter中交换片段列表,并且想知道是否有人可能有想法。我希望有以下功能;
我目前使用滑动标签处理操作栏和查看寻呼机。我在某种程度上成功地使用地图片段交换列表片段,但会出现以下问题:
我的设置如下:
我已经尝试了关于此主题的几乎所有关于stackoverflow的帖子,但到目前为止还没有成功。有人会有任何想法吗?代码如下。谢谢。
//Main activity
public class Main : FragmentActivity, ActionBar.ITabListener
{
//Some generic code here, nothing special
//....//
//The button that triggers the fragments swap
private void BindCommands()
{
ListMapSwitchButton.Click += (sender, e) =>
{
_isList = !_isList;
ListMapSwitchButton.Text = _isList ? RESTAURANTS_MAP_TEXT : RESTAURANTS_LIST_TEXT;
mAdapter.SwapListMapFragments(viewPager);
};
}
}
public class TabsPagerAdapter : FragmentStatePagerAdapter {
private void PopulateFragments()
{
_fragments = new List<RestaurantFragmentBase> ()
{
new RestaurantListFragment (),
new RestaurantListFragment(),
new RestaurantListFragment()
};
}
public void SwapListMapFragments(ViewPager pager)
{
_fragments.Clear ();
_fragments.Add (
new RestaurantMapFragment()
);
_fragments.Add (
new RestaurantMapFragment()
);
_fragments.Add (
new RestaurantMapFragment()
);
NotifyDataSetChanged ();
pager.DestroyDrawingCache ();
}
public override int GetItemPosition (Java.Lang.Object itemObject)
{
return PositionNone;
}
public override Android.App.Fragment GetItem(int index)
{
return _fragments[index];
}
#region implemented abstract members of PagerAdapter
public override int Count {
get {
return 3;
}
}
#endregion
}
请注意,此代码实际上是使用Xamarin在C#中编写的,但除了语法差异外,它应该与Java相同。如果有任何其他信息可能有帮助,请告诉我。