0

Ich versuche, ein Tablayout mit 3 Tabs einzurichten, jeder Tab enthält eine Recycleransicht. Ich habe diese Frage gefunden: How to implement RecyclerView with CardView rows in a Fragment with TabLayout Was ist ähnlich zu dem, was ich will, ich versuche, dies einzurichten, dann werde ich meinen Datenabruf einrichten, nachdem ich das funktioniert.Android Recycler Anzeigen im Registerkartenlayout

Das Problem, das ich jetzt bekomme es den PagerAdapter einrichten. Hier ist mein Code:

public class WorkoutDaysActivity extends BaseActivity{ 

ListView mListView = new ListView(this); 
ArrayList<CustomObject> w29w1m; 
CustomListViewAdapter mCustomListViewAdapter; 


@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.workout_days); 
    mToolBar = activateToolbar(); 
    setUpNavigationDrawer(); 

    // Get the ViewPager and set it's PagerAdapter so that it can display items 
    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
    PagerAdapter pagerAdapter = 
      new PagerAdapter(getSupportFragmentManager(), WorkoutDaysActivity.this) 

    viewPager.setAdapter(pagerAdapter); 

    // Give the TabLayout the ViewPager 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    tabLayout.setupWithViewPager(viewPager); 

    // Iterate over all tabs and set the custom view 
    for (int i = 0; i < tabLayout.getTabCount(); i++) { 
     TabLayout.Tab tab = tabLayout.getTabAt(i); 
     tab.setCustomView(pagerAdapter.getTabView(i)); 
    } 

} 


@Override 
public void onResume() { 
    super.onResume(); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

class PagerAdapter extends FragmentPagerAdapter { 

    String tabTitles[] = new String[] { "Tab One", "Tab Two", "Tab Three" }; 
    Context context; 

    public PagerAdapter(FragmentPagerAdapter fm, Context context) { 
     super(fm); 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return tabTitles.length; 
    } 

    @Override 
    public Fragment getItem(int position) { 

     switch (position) { 
      case 0: 
       return new WorkoutDetailFragment(); 
      case 1: 
       return new WorkoutDetailFragment(); 
      case 2: 
       return new WorkoutDetailFragment(); 
     } 

     return null; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     // Generate title based on item position 
     return tabTitles[position]; 
    } 

    public View getTabView(int position) { 
     View tab = LayoutInflater.from(WorkoutDaysActivity.this).inflate(R.layout.custom_tab, null); 
     TextView tv = (TextView) tab.findViewById(R.id.custom_text); 
     tv.setText(tabTitles[position]); 
     return tab; 
    } 

}} 

Die erste Stelle, wo ich erhalte eine Fehlermeldung ist

PagerAdapter pagerAdapter = 
      new PagerAdapter(getSupportFragmentManager(), WorkoutDaysActivity.this) 

    viewPager.setAdapter(pagerAdapter); 

Der Fehler ist:

PagerAdapter (android.support.v4.app.FragmentPagerAdapter, Context) in PagerAdapter cannot be applied to: (android.support.v4.app.FragmentManager, WorkoutDaysActivity.this) 

Die android.support.v4.app. FragmentManager ist der rot unterstrichene Teil. Der zweite Fehler ist in diesem Teil:

class PagerAdapter extends FragmentPagerAdapter { 

    String tabTitles[] = new String[] { "Tab One", "Tab Two", "Tab Three" }; 
    Context context; 

    public PagerAdapter(FragmentPagerAdapter fm, Context context) { 
     super(fm); 
     this.context = context; 
    } 

Der Fehler ist in der Super (fm); Teil, und es heißt:

FragmentPagerAdapter (android.support.v4.app.FragmentManager) in FragmentPagerAdapter cannot be applied to: android.support.v4.app.FragmentPagerAdapter 

Ich fühle mich wie dies ein einfacher Fehler sein würde, mit der falschen Sache zu importieren, aber meine Versuche zu beheben es gescheitert. Jede Hilfe sehr dankbar, danke!

Antwort

0

Ihre PagerAdapter-Klasse erweitert FragmentPagerAdapter. Dann nimmt sein Konstruktor ein FragmentPagerAdapter zur Initialisierung. Um einen FragmentPagerAdapter zu initialisieren, benötigen Sie bereits einen FragmentPagerAdapter?

Ich denke, dass dieser Parameter ein FragmentManager sein soll.

+0

Das hat funktioniert! Vielen Dank – LBJ33