2017-01-05 6 views
2

Anfänglich gibt das Fragment die entsprechende Listenansicht der ersten und zweiten Registerkarte zurück. Gibt jedoch ein leeres Fragment für die dritte Registerkarte zurück. Wenn ich die erste Registerkarte noch einmal wähle, wird das leere Fragment angezeigt. Kein Problem mit Listadapter . Wenn ich den Adapter in der zweiten Registerkarte einstelle, funktioniert es gut. Das Problem ist mit Mainactivity und in FragmentFragment ist leer, wenn die Registerkarte erneut ausgewählt wird

Mainactivity

public class SwipemainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener 
{ 
private TextView displayTextView; 
public static SwipemainActivity instance; 

TabLayout tabLayout; 
ViewPager viewPager; 
Context context; 
FragmentAdapterClass fragmentAdapter; 

public static Context getInstance() { 
    return instance; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_swipemain); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    instance = this; 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    viewPager = (ViewPager) findViewById(R.id.viewpager); 

    setSupportActionBar(toolbar); 

    tabLayout.addTab(tabLayout.newTab().setText("NEW")); 
    tabLayout.addTab(tabLayout.newTab().setText("CONFIRMED")); 
    tabLayout.addTab(tabLayout.newTab().setText("FINISHED")); 

    fragmentAdapter = new FragmentAdapterClass(getSupportFragmentManager(), tabLayout.getTabCount()); 

    viewPager.setAdapter(fragmentAdapter); 

    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab LayoutTab) { 

      viewPager.setCurrentItem(LayoutTab.getPosition()); 
     } 


     @Override 
     public void onTabUnselected(TabLayout.Tab LayoutTab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab LayoutTab) { 

     } 
    }); 
} 
    } 

Fragment

public class FragmentAdapterClass extends FragmentStatePagerAdapter { 

int TabCount; 

public FragmentAdapterClass(FragmentManager fragmentManager, int CountTabs) { 
    super(fragmentManager); 

    this.TabCount = CountTabs; 

} 

@Override 
public Fragment getItem(int position) { 

    switch (position) { 

     case 0: 
      Tab1 tab1 = new Tab1(); 
      return tab1; 

     case 1: 
      Tab2 tab2 = new Tab2(); 
      return tab2; 

     case 2: 
      Tab3 tab3 = new Tab3(); 
      return tab3; 

     default: 

     return null; 
    } 
} 

@Override 
public int getCount() { 
    return TabCount; 
} 

} 
+0

Add 'viewPager.setOffscreenPageLimit (3);' in 'SwipeMainActivity' –

+0

Dank Mayur Raval. Funktioniert perfekt. – Ana

Antwort

3

ich nie diesen Hörer verwenden zum Ändern des viewpager Fragment. Verwenden Sie setOffScreenPageLimit, um dem viewpager mitzuteilen, wie viele Fragmente im Speicher gespeichert werden müssen. So stelle ich meine Fragmente immer mit Tabbedlayout und Viewpager ein.

viewPager.setOffscreenPageLimit(AMOUNT_OF_FRAGMENTS); 
Verwandte Themen