首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FragmentPagerAdapter到onbackpressed

FragmentPagerAdapter到onbackpressed
EN

Stack Overflow用户
提问于 2018-03-13 13:59:29
回答 1查看 440关注 0票数 0

我在it.the中有一个活动和四个片段,问题是当我从任何片段开始一个活动时,当我调用onactivityforresult时,导航转到that.Also之后的第一个片段,导航返回到第一个片段。MainActivity代码为:

代码语言:javascript
复制
mPagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
        private final Fragment[] mFragments = new Fragment[]{
                new RecentPostsFragment(),
                new DonorsFragment(),
                new PlaceActivity(),
                new MyTopPostsFragment(),

        };
        private final String[] mFragmentNames = new String[]{
                getString(R.string.heading_recent),
                getString(R.string.heading_donors),
                getString(R.string.heading_nearby),
                getString(R.string.heading_my_top_posts)
        };

        @Override
        public Fragment getItem(int position) {
            return mFragments[position];
        }

        @Override
        public int getCount() {
            return mFragments.length;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentNames[position];
        }
    };
    // Set up the ViewPager with the sections adapter.
    mViewPager = findViewById(R.id.container);
    mViewPager.setAdapter(mPagerAdapter);
    TabLayout tabLayout = findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(mViewPager);

片段代码为:

代码语言:javascript
复制
       @Override
public View onCreateView (LayoutInflater inflater, ViewGroup container,
                          Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    View rootView = inflater.inflate(R.layout.fragment_all_posts, container, false);
   // [START create_database_reference]
    mDatabase = FirebaseDatabase.getInstance().getReference();
    // [END create_database_reference]

    mRecycler = rootView.findViewById(R.id.messages_list);
    mRecycler.setHasFixedSize(true);

    return rootView;
}
EN

回答 1

Stack Overflow用户

发布于 2018-03-13 14:15:40

试试这个:-

代码语言:javascript
复制
private void wannaReplaceFragment (Fragment fragment){
  String backState = fragment.getClass().getName();

  FragmentManager fm = getSupportFragmentManager();
  boolean fragmentPopped = fm.popBackStackImmediate (backState, 0);

  if (!fragmentPopped){
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(R.id.content_frame, fragment);
    ft.addToBackStack(backState);
    ft.commit();
  }
}

替换片段时,请使用popBackStackImmediate()方法。一旦你可以从这个链接获取指南:- How to resume Fragment from BackStack if exists

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49249237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档