微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 在显示Viewpager,navigation_mode_tabs之前调用Fragment的onStart()

我使用ViewPager和带有NavigationMode的ActionBar:“NAVIGATION_MODE_TABS”

我放了3个片段:Fragment0(左标签),Fragment1(中间标签),Fragment2(右标签)

首先,出现Fragment0,并为Fragment0和Fragment1调用方法“onCreateView”和“onStart”

如果我水平滑动以转到“中间选项卡”(Fragment1),则会调用Fragment2(右选项卡)的方法“onCreateView”和“onStart”…

所以,我想知道这是否正常?

因为我想在它出现之前调用Fragment2的“onStart”,它是怎么做到的?

我的代码

public class ActivityPrincipale extends FragmentActivity {
    private Intent intentService1;   
    private Fragment fragment;
    [..]
    private ActionBar.TabListener tabListener;

    @Override
    protected void onCreate(Bundle arg0) {
        super.onCreate(arg0);        
        setContentView(R.layout.viewpager);
        // Création de la liste de Fragments que fera défiler le PagerAdapter
        listFragments = new Vector();

        // Ajout des Fragments dans la liste des fragments
         listFragments.add(Fragment.instantiate(this,Fragment0.class.getName()));
         listFragments.add(Fragment.instantiate(this,Fragment1.class.getName()));
         listFragments.add(Fragment.instantiate(this,Fragment2.class.getName()));

        // Création de l'adapter qui s'occupera de l'affichage de la liste de Fragments
        this.mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(),listFragments);

        pagerView = (ViewPager) super.findViewById(R.id.viewpager);

        // affectation de l'adapter au ViewPager
        pagerView.setAdapter(this.mPagerAdapter);

        pagerView.setonPagechangelistener(new ViewPager.SimpleOnPagechangelistener() {
            @Override
            public void onPageSelected(int position) {
                // Quand il y a un swapp entre les page
                // on selectionne le tab correspondant
                Log.w("SWAPPING FRAGMENT!!","swapping de fragment avec comme positin de destination = " + position);
                getActionBar().setSelectednavigationItem(position); // DEBUGMODE

            }
        });

        actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Create a tab listener that is called when the user changes tabs.
        tabListener = new ActionBar.TabListener() {

            public void onTabSelected(ActionBar.Tab tab,FragmentTransaction ft) {             
                pagerView.setCurrentItem(tab.getPosition());
            }
            public void onTabUnselected(ActionBar.Tab tab,FragmentTransaction ft) {               
            }
            public void onTabReselected(ActionBar.Tab tab,FragmentTransaction ft) {                
            }
        };

        actionBar.addTab(actionBar.newTab().setText("Frag0").setTabListener(tabListener));
        actionBar.addTab(actionBar.newTab().setText("Frag1"").setTabListener(tabListener));
        actionBar.addTab(actionBar.newTab().setText("Frag2").setTabListener(tabListener));
    }
}

一个片段:

public class Fragment0 extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_0,container,false);
        Log.w("oFragmento","fragment0");
        return rootView;

    }

}

我的PagerAdapter:

public class MyPagerAdapter extends FragmentPagerAdapter {

    private final List fragments; 

    public MyPagerAdapter(FragmentManager fm,List list_fragments) {
        super(fm);       
        this.fragments = list_fragments;
    }

    @Override
    public Fragment getItem(int position) {           
        return (Fragment) fragments.get(position);
    }

    @Override
    public int getCount() {        
        return this.fragments.size();
    }
}
最佳答案
片段通过onCreateView然后onStart完全正常.你可能想看看Fragment Lifecycle.

当你说“就在它出现之前”时我理解正确,那么我认为你正在寻找的生命周期方法是onResume方法.这是在片段处于活动状态之前调用的最后一个.

原文地址:https://www.jb51.cc/android/430908.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐