相关疑难解决方法(0)

在popBackStack之后,ViewPager中的片段未恢复

问题

从另一个片段返回后,片段不会重新附加到其宿主ViewPager.

情况

一个托管片段的活动,其布局包含ViewPager(PageListFragment在下面的示例中).ViewPager由FragmentStateViewPagerAdapter填充.托管内部托管的单个片段(PageFragment在下面的示例中)可以打开包含一组新页面的子页面列表.

行为

只要没有按下后退按钮,一切正常.一旦用户关闭其中一个子页面列表,就会重新创建先前的列表,但不会显示先前显示的页面.在父页面列表中的其他页面上滑动仍然有效.

可以在github上找到示例应用程序:

活动

public class MainActivity extends FragmentActivity {

private static final String CURRENT_FRAGMENT = MainActivity.class.getCanonicalName() + ".CURRENT_FRAGMENT";

public static final String ARG_PARENTS = "Parents";

public void goInto(String mHostingLevel, String mPosition) {
    Fragment hostingFragment = newHostingFragment(mHostingLevel, mPosition);
    addFragment(hostingFragment);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    addBaseFragment();
}

private void addBaseFragment() {
    Fragment hostingFragment = newHostingFragment("", "");
    addFragment(hostingFragment);
}

private Fragment newHostingFragment(String mHostingLevel, String oldPosition) {
    Fragment …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

56
推荐指数
2
解决办法
2万
查看次数

如何使用片段替换ViewPager

我有以下布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >


<android.support.v4.view.ViewPager
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</android.support.v4.view.ViewPager>
Run Code Online (Sandbox Code Playgroud)

Everyting is workinf fine,但我想用Fragment替换ViewPager

getSupportFragmentManager().beginTransaction()
                .replace(R.id.view_pager, new CustomFragment())                 
                .commit();
Run Code Online (Sandbox Code Playgroud)

这不是诋毁ViewPager我该怎么办?

android android-fragments android-viewpager fragmenttransaction

5
推荐指数
1
解决办法
3909
查看次数

返回视图时 FragmentManager 已经在执行事务

我有一个视图,它有一个 tablayout 激活 viewpager,在查看页面时它工作正常,但是如果我单击该视图上的一个项目然后返回到过去的屏幕,我会得到:

Java.Lang.IllegalStateException:FragmentManager 已经在执行事务

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    CurrentActivity = Activity;

    var view = inflater.Inflate(Resource.Layout.fragment_directory, null);

    _tabLayout = view.FindViewById<TabLayout>(Resource.Id.directory_tabs);
    _viewPager = view.FindViewById<ViewPager>(Resource.Id.directory_pager);

    SetTabLayout();
    SetViewPager();

    return view;
}

private void SetTabLayout()
{
    var userTab = _tabLayout.NewTab();
    userTab.SetText("Users");

    var orgUnitsTab = _tabLayout.NewTab();
    orgUnitsTab.SetText("Organizations");

    _tabLayout.AddTab(userTab);
    _tabLayout.AddTab(orgUnitsTab);
    _tabLayout.TabGravity = TabLayout.GravityFill;
}

private void SetViewPager()
{
    var pagerAdapter = new DirectoryPagerAdapter(FragmentManager, _tabLayout.TabCount);

    _viewPager.Adapter = pagerAdapter;
    _viewPager.AddOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(_tabLayout));
}
Run Code Online (Sandbox Code Playgroud)

不确定它是否有所作为,但是当我离开这个视图时,我从一个片段变成了一个活动。

xamarin.android android-viewpager android-tablayout

1
推荐指数
1
解决办法
5813
查看次数