Utilizzo schede viewpager e barra delle azioni (4 schede). All'avvio dell'attività principale, carica i 4 dati dei frammenti.Come caricare il metodo di attività del frammento sucreate() della scheda selezionata nella barra delle azioni solo se la scheda è selezionata?
come fare a caricare solo i dati di tabulazione selezionati?
Inoltre, quando si seleziona la scheda 1, vengono caricati tab1 e tab0.
Se faccio scorrere da tab0 a tab1, onstart() per entrambe le schede non chiamate.
Se si seleziona la scheda 2 e quindi si seleziona la scheda 0, onstart() per i carichi della tabella0.
Se si scorre tra Tab2 e Tab3, onstart() per entrambe le schede non chiamate.
MainActivity.java
MainPagerAdapter tabsPagerAdapter;
ViewPager viewPager;
ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.pager);
tabsPagerAdapter = new MainPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(tabsPagerAdapter);
actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(actionBar.newTab().setIcon(getResources().getDrawable(R.drawable.doros)).setTabListener(this));
actionBar.addTab(actionBar.newTab().setIcon(getResources().getDrawable(R.drawable.esteshara)).setTabListener(this));
actionBar.addTab(actionBar.newTab().setIcon(getResources().getDrawable(R.drawable.aswak)).setTabListener(this));
actionBar.addTab(actionBar.newTab().setIcon(getResources().getDrawable(R.drawable.akhbar)).setTabListener(this));
viewPager.setOffscreenPageLimit(0);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.abs_layout);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
viewPager.setCurrentItem(3);
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
MainPageAdapter.java
public class MainPagerAdapter extends FragmentPagerAdapter implements PagerSlidingTabStrip.IconTabProvider{
public MainPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 4;
}
private int[] tabIcons = {
R.drawable.ar,
R.drawable.ar,
R.drawable.ar,
R.drawable.ar
};
@Override
public android.support.v4.app.Fragment getItem(int position) {
switch (position)
{
case 3: return new NewsFragment();
case 1: return new ConsultationFragment();
case 2: return new IndecesFragment();
case 0: return new LessonsFragment();
default: return null;
}
}
@Override
public int getPageIconResId(int i) {
return tabIcons[i];
}
}
ho trovato questo link, ma la sua non è utile link
Questo è il modo in cui funziona il pagerAdapter, è necessario correggere la propria logica per impedirlo, ad esempio prendere il valore booleano per quattro frammenti e abilitarli quando la scheda è selezionata. E carica i frammenti in base a TRUE o FALSE. –
L'ho provato, ma il problema è che quando seleziono una scheda, la sua attività frammento su resume() o oncreate non viene chiamata. – Mohammad