Używam kart stron podglądu i paska zadań (4 karty). Po uruchomieniu głównej operacji ładuje dane 4 fragmentów.Jak załadować akcję fragmentu oncreate() wybranej karty akcji tylko, jeśli wybrano tę kartę?
jak załadować tylko wybrane dane karty?
Również po wybraniu zakładki 1 ładowane są tab1 i tab0.
Jeśli przesuń palcem między tab0 i tab1, onstart() dla obu kart nie wywołanych.
Jeśli wybiorę tab2, a następnie wybierz tab0, onstart() dla obciążeń tab0.
Jeśli przesunąć palcem między tab2 i tab3, onstart() dla obu kart nie wywołanych.
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];
}
}
Znalazłem ten link, ale nie jest pomocny link
W tym celu działa pagerAdapter, dlatego musisz ustawić własną logikę, aby temu zapobiec, np. Przyjąć wartość boolowską dla czterech fragmentów i włączyć ją po wybraniu karty. I załaduj fragmenty na podstawie TRUE lub FALSE. –
Próbowałem, ale problem polega na tym, że po wybraniu zakładki jego aktywność fragmentu onresume() lub oncreate nie jest wywoływana. – Mohammad