2017-05-16 8 views
0

Ich möchte Überschreiben Sie die öffentliche Funktion getItem (int position) enthält:Return-Klasse, die Fragmente

public class SectionsPagerAdapter extends FragmentPagerAdapter { 

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

     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
       case 0: 
        Tab1Content tab1 = new Tab1Content(); 
        return tab1; 
       case 1: 
        Tab2Content tab2 = new Tab2Content(); 
        return tab2; 
       case 2: 
        Tab3Content tab3 = new Tab3Content(); 
        return tab3; 
      } 
      return null; 
     } 
} 

Tab1Content sieht wie folgt aus:

public class Tab1Content extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.tab1_content, container, false); 
     return rootView; 
    } 
} 

Aber Android Studio wirft Fehler in Logs:

Error:(141, 28) error: incompatible types: Tab1Content cannot be converted to Fragment 

Was mache ich falsch?

+1

Fügen Sie die folgende Zeile in den Adapter ein: 'import android.support.v4.app.Fragment; importieren android.support.v4.app.FragmentManager; importieren android.support.v4.app.FragmentPagerAdapter; ' Und in Fragment-Klasse fügen Sie unter Importe: ' importieren android.support.v4.app.Fragment; ' – ashish

Antwort

0

Ihr Fragment sollte die android.support.v4.Fragment erweitern.

Und abgesehen davon sollten Sie einen leeren Konstruktor in Ihrem Fragment verwenden.

können Sie auch newInstance Methode verwenden, wenn Sie einige Daten in Ihrem Fragment übergeben möchten:

In Fragment:

public static TestFragment newInstance(int type) { 

     TestFragment f = new TestFragment(); 
     Bundle b = new Bundle(); 
     b.putInt("type", type); 

     f.setArguments(b); 

     return f; 
    } 

Ihre getItem würde wie folgt aussehen:

@Override public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       return TestFragment.newInstance(1); 
      case 1: 
       return TestFragment1.newInstance(2); 
      case 2: 
       return TestFragment2.newInstance(3); 
     } 
     return null; 
    } 

TestFragment1 und TestFragment2 ist ähnlich wie Ihre TestFragment.