使用 tabLayout 和 ViewPager 在 Fragment 中未调用 OnResume() [英] OnResume() not called in Fragment using tabLayout and ViewPager

查看:23
本文介绍了使用 tabLayout 和 ViewPager 在 Fragment 中未调用 OnResume()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 tabLayout 开发一个应用程序.

i'm developing an app using tabLayout.

我有一个问题:当我尝试重新激活 Fragment 时,方法 OnResume 未被调用.

I've a problem: When I try to reactivate a Fragment, the method OnResume is non called.

这是我的活动:

 private void init() {
    fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Nuovo Ticket", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });


    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    final PagerAdapter adapter = new PagerAdapter
            (getSupportFragmentManager(), tabLayout.getTabCount());
    viewPager.setAdapter(adapter);

    tabLayout.setupWithViewPager(viewPager);
}

我使用这样的 FragmentStatePagerAdapter:

I use a FragmentStatePagerAdapter like this:

public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;

public PagerAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {

    switch (position) {
        case 0:
            return new LavorazioneFragment();
        case 1:
            return new PendingFragment();
        case 2:
            return new StoriciFragment();
        default:
            return null;
    }
}

@Override
public int getCount() {
    return mNumOfTabs;
}

}

当我从 TAB3 片段(最后一个)重新激活 TAB1 片段时,会调用 OnResume 方法.但是,例如,

When i reactivate the TAB1 Fragment from TAB3 Fragment (the last one), the OnResume Method is called. But, for example,

当我尝试从第二个标签重新激活第一个标签时,从未调用过.

When I try to reactivate the first tab from the second, never called.

推荐答案

我已经解决了这个问题.我使用 setUserVisibleHint(boolean isVisibileToUser) 而不是 onResume().像这样:

I've solved the problem. I use setUserVisibleHint(boolean isVisibileToUser) instead onResume(). Like this:

 @Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if(isVisibleToUser) {
        init();
    } else {

    }
}

谢谢大家!

这篇关于使用 tabLayout 和 ViewPager 在 Fragment 中未调用 OnResume()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆