2017-01-09 7 views
0

Below meine Hauptaktivitätsklasse ist:getSupportFragmentManager() kann nicht Methode lösen

public class MainActivity extends Activity { 
    private SectionsPagerAdapter mSectionsPagerAdapter; 
    private ViewPager mViewPager; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     //GETTING THE ERROR HERE 
     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 
     mViewPager = (ViewPager) findViewById(R.id.container); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(mViewPager); 
    } 

    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

     public SectionsPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
       case 0: 
        Master mView = new Master(); 
        return mView; 
       case 1: 
        Device dView = new Device(); 
        return dView; 
       default: 
        return null; 
      } 
     } 

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

     @Override 
     public CharSequence getPageTitle(int position) { 
      switch (position) { 
       case 0: 
        return "Master"; 
       case 1: 
        return "Device"; 
      } 
      return null; 
     } 
    } 
} 

Ich erhalte eine Fehlermeldung auf der Linie sagt mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); sagen, dass nicht Methode getSupportFragmentManager auflösen kann.

änderte ich die Basisklasse von MainActivity Activity-FragmentActivity seit getSupportFragmentManager ein Verfahren zur Herstellung FragmentActivity ist aber ist das Ok, wenn ich nicht eine Klasse, die nicht die Activity Klasse erstreckt? Ich bin neu in Android und nicht sicher, ob es in Ordnung ist, das zu tun?

Antwort

2

aber ist das Ok, wenn ich keine Klasse habe, die nicht die Hauptaktivitätsklasse ist?

FragmentActivity erweitert Activity. Daher erweitern Sie die Hauptklasse Activity nur indirekt.

+0

Oh. Ich habe überprüft und aus irgendeinem Grund gefunden, dass es nicht war. Danke für die Klarstellung. – Bobby

+0

Schnelle Frage. Du brauchst immer eine Klasse, die 'Activity' in einem Android-Projekt korrekt erweitert? – Bobby

+1

@Bobby: "Ich habe überprüft und aus irgendeinem Grund gefunden, dass es nicht" - wenn Sie [die 'Fragment'Activity' JavaDocs] (https://developer.android.com/reference/android/support/v4/ app/FragmentActivity.html), beginnt die dritte Zeile mit "extends Activity". "Du brauchst immer eine Klasse, die Aktivität in einem Android-Projekt korrekt erweitert?" - "Immer" ist ein starkes Wort. :-) Normalerweise hat eine Android App eine oder mehrere Aktivitäten. Es gibt einige Szenarien, in denen Sie keine haben, aber sie sind sehr ungewöhnlich (z. B. ein Plugin für eine andere App schreiben). – CommonsWare

0

Ihre Klasse muss AppCompatActivity statt Activity erweitern, um auf getSupportFragmentManager() zuzugreifen.

Verwandte Themen