user5475558
user5475558

Reputation:

Swipe Tab doesn't work, i don't see that on the screen

but come across a problem. When i run the app i don't see that my screen is swipes, and also i can't see tabs. Can you help Here is my code: enter image description here

public class MainActivity extends AppCompatActivity {

        Toolbar toolbar;
        TabLayout tabLayout;
        ViewPager viewPager;
        ViewPagerAdapter viewPagerAdapter;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);


            toolbar= (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);

            tabLayout= (TabLayout) findViewById(R.id.tablayout);
            viewPager= (ViewPager) findViewById(R.id.viewpager);


            viewPagerAdapter=new ViewPagerAdapter(getSupportFragmentManager());
            viewPagerAdapter.addFragments(new Home(),"Home");
           // viewPagerAdapter.addFragments(new Top(),"Top");
           // viewPagerAdapter.addFragments(new Buttom(),"Buttom");
            viewPager.setAdapter(viewPagerAdapter);
            tabLayout.setupWithViewPager(viewPager);

        }
    }

I'm getting an error on commented lines. Here is my Pager Adapters code:

public class ViewPagerAdapter extends FragmentPagerAdapter {

    ArrayList<Fragment> fragments= new ArrayList<>();
    ArrayList<String> tabTitles = new ArrayList<>();

    public void addFragments(Home fragments, String titles){

        this.fragments.add(fragments);
        this.tabTitles.add(titles);


    }

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

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

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

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

In my XML i've only Viewpager, Toolbarand TabLayout. Please Help.

Upvotes: 1

Views: 330

Answers (3)

Bruno Ferreira
Bruno Ferreira

Reputation: 1571

Probably is this:

Home fragments

Try change to this:

Fragment fragments

Method be like this:

public void addFragments(Fragment fragments, String titles){

        this.fragments.add(fragments);
        this.tabTitles.add(titles);


    }

So you in the method you have Home fragments as paramter and when you call other fragments diferent than Home because parameter is Home you get error, to fix just do like I said change parameter to Fragment fragments. it's a small mistake.

Upvotes: 0

forestvine
forestvine

Reputation: 577

Try this.

In your xml layout file.

 <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        app:tabSelectedTextColor="@android:color/white"/>

<android.support.v4.view.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

In your mainactivity

    tabLayout.addTab(tabLayout_ordering.newTab().setText("Tab 1"));
    tabLayout.addTab(tabLayout_ordering.newTab().setText("Tab 2"));

    viewPager.setAdapter(pagerAdapter);
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout_ordering));


    tabLayout_ordering.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {

            viewPager.setCurrentItem(tab.getPosition());

        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });

Then create a class for your pager adapter.

public class TabPagerAdapter extends FragmentPagerAdapter {
public TabPagerAdapter(FragmentManager fm, int tabCount) {
    super(fm);

}

@Override
public Fragment getItem(int position) {

    switch (position) {
        case 0:
            FragmentA fragmentA = new FragmentA();
            return fragmentFoods;
        case 1:
            FragmentDrinks fragmentA = new FragmentA();
            return fragmentA;

        default:
            return null;
    }

}

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

Upvotes: 0

MrLeblond
MrLeblond

Reputation: 1035

You need to change your type of parameter in addFragments

try this :

public void addFragments(Fragment fragments, String titles)

instead of

public void addFragments(Home fragments, String titles)

I hope this may help you

Upvotes: 2

Related Questions