5

Bir ViewPager ve NavigationMode ile İşlem Çubuğu kullanılan navigation_mode_tabs (sağ sekme)Çağrı onStart() Fragment of Viewpager gösterilecek önce

Öncelikle Fragment0 görünür ve yöntemler "onCreateView" ve "onStart", Fragment0 vE Fragment1

Ben "orta sekmesine" gitmek için yatay olarak kaydırın Eğer

(Fragment1) için denir Fragment2'nin "onCreateView" ve "onStart" yöntemleri (sağ sekme) ...

Bunun normal olup olmadığını bilmek istiyorum.

Fragment2'nin "onStart" öğesini hemen görünmeden hemen önce aramak istiyorum, Nasıl Yapılır?

Kodum:

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)); 
    } 
} 

Bir Parçası:

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; 

    } 

} 

Benim PagerAdapter:

bir Parça onCreateView sonra onStart geçmesi için tamamen normaldir
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(); 
    } 
} 

cevap

4

. Fragment Lifecycle.

'a bir göz atmak isteyebilirsiniz Eğer "hemen görünmeden önce" dediğinizde doğru anlıyorsanız, o zaman yaşam döngüsü yönteminin aradığınızı düşünüyorum: onResume yöntemi. Parça aktif olmadan önce aranacak son şey budur.

+1

Böylece, ofset normaldir, ancak görmeden önce (veya görünüm sırasında) "onStart" veya "onCreateView" veya "onResume" juste aramasını nasıl zorlayabilirim? Bir öğeyi seçerken Fragment1 içinde bir ListView kullanıyorum, Fragment2 görüntülenir ama onun "onStart"/"onCreateView"/"onResume" olarak adlandırılır ... Güncelleştirmek istiyorum – bzhWarrior

+0

Bunlar için yaşam döngüsü olayları fragmanı. Başlangıç ​​etkinlikleri her seferinde çağrılır, işletim sistemi tarafından geri getirilen bellek nedeniyle sona eren yaşam döngüsü olaylarının bir kısmı aranamaz. – TronicZomB