从另一个片段返回后,片段不会重新附加到其宿主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) 我有以下布局
<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
我有一个视图,它有一个 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)
不确定它是否有所作为,但是当我离开这个视图时,我从一个片段变成了一个活动。
android ×2