2017-07-29 44 views
0

Ich versuche, ViewPager mit mehreren Fragmenten zu erstellen.FragmentPagerAdapter Absturz

Aber wenn ich app starten ich Absturz mit Text

Versuch virtuelle Methode 'java.lang.Class java.lang.Object.getClass()' auf ein Null-Objekt Verweis aufrufen

mein Code ist folgende:

public static class MyPagerAdapter extends FragmentPagerAdapter { 
     private static int NUM_ITEMS = 4; 

     MainFragment main; 
     CartFragment cart; 

     public MyPagerAdapter(FragmentManager fragmentManager) { 
      super(fragmentManager); 

      main = new MainFragment(); 
      cart = new CartFragment(); 
     } 

     // Returns total number of pages 
     @Override 
     public int getCount() { 
      return NUM_ITEMS; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
       case 0: 
        return main; 
       case 1: 
        return null; 
       case 2: 
        return null; 
       case 3: 
        return cart; 
       default: 
        return null; 
      } 
     } 
    } 
+1

Mögliche Duplikate von [Was ist eine NullPointerException und wie behebe ich sie?] (Https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -es) – Henry

Antwort

0

Verwenden Sie den folgenden Code zum Aufrufen Fragmente ...

@Override 
    public android.support.v4.app.Fragment getItem(int position) { 
     Fragment f = new Fragment(); 
     switch (position) { 
      case 0: 
       f = new LogoFragment(); 
       break; 
      case 1: 
       f = new AboutUsFragment(); 
       break; 
      case 2: 
       f = new ServicesFragment(); 
       break; 
     } 
     return f; 
    } 
0

dies ist mein Weg, es zu benutzen:

public class ViewPagerAdapter extends FragmentPagerAdapter { 

ArrayList<PagerFragments> mFragments; 

public ViewPagerAdapter(FragmentManager fm) { 
    super(fm); 
    this.mFragments = new ArrayList<>(); 
} 

public void addFragment(Fragment fragment,String title) { 
    PagerFragments t = new PagerFragments(); 
    t.setTitle(title); 
    t.setFragment(fragment); 
    mFragments.add(t); 
    notifyDataSetChanged(); 
} 
public void addFragment(Fragment fragment) { 
    PagerFragments t = new PagerFragments(); 
    t.setFragment(fragment); 
    mFragments.add(t); 
    notifyDataSetChanged(); 
} 
//This method return the fragment for the every position in the View Pager 
@Override 
public Fragment getItem(int position) { 
    return mFragments.get(position).getFragment(); 
} 

// This method return the titles for the Tabs in the Tab Strip 

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

// This method return the Number of tabs for the tabs Strip 

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

}

PagerFragment.java:

import android.support.v4.app.Fragment; 


public class PagerFragments { 
Fragment fragment; 
String title; 

public Fragment getFragment() { 
    return fragment; 
} 

public void setFragment(Fragment fragment) { 
    this.fragment = fragment; 
} 

public String getTitle() { 
    return title; 
} 

public void setTitle(String title) { 
    this.title = title; 
} 

}

Dann Fragment oder Aktivität:

private ViewPagerAdapter viewPagerAdapter; 
viewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager()); 
        viewPagerAdapter.addFragment(new RTopGainLossFragment(oneDay), "1D"); 
        viewPagerAdapter.addFragment(new RTopGainLossFragment(oneWeek), "1W"); 
        viewPagerAdapter.addFragment(new RTopGainLossFragment(oneMonth), "1M"); 
        viewPagerAdapter.addFragment(new RTopGainLossFragment(oneYear), "YTD"); 
        viewPagerAdapter.addFragment(new RTopGainLossFragment(ytd), "1Y"); 
        viewPagerAdapter.addFragment(new RTopGainLossFragment(max), "MAX"); 
        viewpager.setAdapter(viewPagerAdapter); 
        tab.setupWithViewPager(viewpager); 
Verwandte Themen