Ich verwende Viewpager und Actionbar Tabs (4 Tabs). Wenn die Main-Aktivität gestartet wird, werden die 4 Fragmentdaten geladen.Wie lade ich die Fragment-Aktivität oncreate() -Methode der ausgewählten Aktionsleiste nur, wenn die Registerkarte ausgewählt ist?
Wie kann man nur die ausgewählten Tabdaten laden?
Auch wenn ich Tab 1, Tab1 und Tab0 lädt.
Wenn ich zwischen tab0 und tab1 wische, wird onstart() für beide Registerkarten nicht aufgerufen.
Wenn ich Tab2 wähle und dann tab0, onstart() für tab0 lädt.
Wenn ich zwischen tab2 und tab3 wische, onstart() für beide nicht aufgerufenen Registerkarten.
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];
}
}
fand ich diesen Link, aber es ist nicht hilfreich link
So funktioniert der pagerAdapter, Sie müssen Ihre eigene Logik korrigieren, um dies zu verhindern, wie booleschen Wert für vier Fragmente nehmen und sie aktivieren, wenn die Registerkarte ausgewählt ist. Und laden Sie Fragmente basierend auf TRUE oder FALSE. –
Ich habe das versucht, aber das Problem ist, dass, wenn ich eine Registerkarte auswählen, ihre Fragment-Aktivität onresume() oder oncreate nicht aufgerufen wird. – Mohammad