2017-05-27 1 views
0

Ich habe Registerkarten erstellt. Dafür habe ich ein Fragment, in dem ich Registerkarten erstellt und Pager angezeigt habe. Hat auch zwei Fragmente erstellt.Liste nicht in Registerkarten mit View Pager

Zeigt die Listen in den Fragmenten.

Jetzt ist das Problem, wenn die App zum ersten Mal ausgeführt wird das MyTrips-Fragment beim ersten Laden kann die Listen in beiden Registerkarten sehen, aber wenn ich zurück und aus dem Menü Optionen der App wählen MyTrips-Fragment zeigt es keine Liste in beiden Registerkarten.

Wie ich Debugging habe ich festgestellt, dass Fragmente nicht zum zweiten Mal hinzugefügt werden. Ich rufe viewPagerAdapter onCreateView eines Fragments auf.

Also kann es nur einmal geladen werden?

MyTripsFragment

public class MyTrips extends Fragment { 

    private ViewPager viewPager; 
    private TabsPagerAdapter mAdapter; 
    private int Numboftabs =2; 
    private TabLayout tabLayout; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_my_trips, container, false); 


     mAdapter = new TabsPagerAdapter(getActivity().getFragmentManager(),Titles,Numboftabs); 
     viewPager = (ViewPager)view.findViewById(R.id.pager); 

     setupViewPager(viewPager); 


     tabLayout = (TabLayout)view.findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 

     return view; 
    } 

    private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager()); 
     adapter.addFragment(new ScheduledTravelFragment(), "Scheduled Travel"); 
     adapter.addFragment(new TravelHistoryFragment(), "Travel History"); 
     viewPager.setAdapter(adapter); 
    } 


    class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

     public ViewPagerAdapter(FragmentManager manager) { 
      super(manager); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return mFragmentList.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 

     public void addFragment(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
     } 
    } 

} 

Bitte führen mit diesem danke ..

Antwort

1

Verwenden FragmentStatePagerAdapter statt FragmentPagerAdapter

diese mehr Informationen lesen Difference between them

+0

ohh ja ,. Ich danke Ihnen so viel .. – Sid

+1

Ich bin froh, dass es geklappt hat, ich hatte das gleiche Problem und brauchte 2 Tage, um die Lösung und den Grund zu finden, Happy Coding –

+0

Hallo, ich habe funktioniert, aber ich habe zu Hause Aktivität, dass ich Optionen Menü so onClick des Optionen-Menüs Ich ersetze die Fragmente, jetzt, wenn ich meinTrips-Fragment zum ersten Mal ersetze, kann ich die Liste sehen. Wenn ich wieder zum Hauptfragment gehe und den myTrips-Bildschirm sehe, kann ich die Liste sehen, aber vom myTrips-Bildschirm aus andere Optionen Menü und ersetzen Sie ein anderes Fragment, dann beim Zurückdrücken kann ich nicht sehen, die Liste in MyTrips Fragment zeigt es leer. Was ist dafür zu tun? Vielen Dank. @quick Lerner – Sid

Verwandte Themen