【发布时间】:2021-01-25 04:44:20
【问题描述】:
我在切换模式或暗/亮模式后返回时遇到问题,然后当前片段为空。我想在切换模式/重新创建活动后取回我当前的片段(不是新片段)。我正在使用 FragmentStatePagerAdapter。我已经尝试过使用 InstantiateItem 方法like this。但我发现该方法创建了一个新片段。并且使用 SetRetainInstance 但是,我认为 SetRetainInstance 不是最好的方法。我已经在搜索信息,但仍然没有得到它。我正在使用 GetItem 来声明适配器内的片段。目前我有 3 个标签/3 个片段。
public override Fragment GetItem(int position)
{
switch (position)
{
case 1:
if (fragment1 == null)
{
fragment1 = new FragmentOne(_parentActivity);
}
else
{
fragment1.RefreshPage();
}
return fragment1;
case 2:
if (fragment2 == null)
{
fragment2 = new FragmentTwo(_parentActivity);
}
return fragment2;
case 3:
if (fragment3 == null)
{
fragment3 = new FragmentThree(_parentActivity);
}
else
{
fragment3.fragment3Adapter.UpdateData();
}
return fragment3;
default:
throw new Exception("Unrecognized fragments!!!");
}
}
然后,在 Activity 中,我使用 OnPageSelected(position) 来获取/了解选定的选项卡/单击的选项卡。
public void OnPageSelected(int position)
{
if (position == 1)
{
fragmentAdapter.RefreshPage();
}
else if (position == 3)
{
fragmentAdapter.fragment3.UpdateData();
}
}
不,在 OnPageSelected 中,我的 Fragment3 为空,但适配器不为空(fragmentAdapter.fragment3.UpdateData();)。仅供参考,我不使用 FragmentTransaction 来切换/获取我的片段。那么,有没有办法在不创建新片段的情况下获取当前片段?请帮我!谢谢!
【问题讨论】:
-
可以吗?
标签: android android-fragments xamarin.android fragmentstatepageradapter