شما با کدی که نوشته اید، تنها ViewPager را تغییر می دهید که در آن، محتوای Tab ها نمایش داده می شود. یعنی مثلا اگر Tab با استفاده از ViewPager و TabLayout ساخته شده باشد، محتوای تب ها (Tabs) در View های مربوط به ViewPager قرار می گیرند و چون شما مستقیما View مربوط به ViewPager را تغییر می دهید، محتویات (View) تب مورد نظر نمایش داده می شود، اما عنوان تب را مشاهده نمی کنیم.
بنابراین شما باید بر اساس TabLayout (البته اگر با آن ساخته شده)، تب را تغییر بدهید (کدهای استاندارد تب بندی ها را بررسی کنید و ببینید که به چه صورت، تب را انتخاب می کنند - مثلا همان کدی که بنده ذکر کردم). در کدهای استاندارد، ViewPager و TabLayout به یکدیگر وابسته هستند و با تغییر تب بر اساس TabLayout ، محتویات (View) مربوط به ViewPager نیز تغییر می کند.
--------------------------------------------------
توصیه می شود کد مربوط به تغییر تب برای کدهای تب بندی مورد استفاده خود را بیابید، اما چون در مورد یک شیوه کدنویسی، اطلاعاتی را ذکر کردم، در ادامه توضیحات بیشتری در مورد آنها می دهم.
بنده کد کاملتری را بر اساس ViewPager و TabLayout ذکر می کنم (کدها کامل نیست و برای درک ساختار کلی است، با دیدن ساختار، می توانید مثال های کامل را در اینترنت بیابید) :
فایل xml متناظر با Activity (کامل نیست و صرفا نحوه قرارگیری تگ های اصلی را بیان می کند) :
کد پیاچپی:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/app_bar_main"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:layout_gravity="center_horizontal"
app:tabMode="scrollable"
app:tabTextAppearance="@style/Kelidestan_Custom_TabLayout_Text"
android:theme="@style/ThemeOverlay.AppCompat.Dark" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
</RelativeLayout>
کد در Activity :
کد پیاچپی:
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
// Fragment manager to add fragment in viewpager we will pass object of Fragment manager to adpater class.
FragmentManager manager=getSupportFragmentManager();
//object of PagerAdapter passing fragment manager object as a parameter of constructor of PagerAdapter class.
PagerAdapter adapter=new PagerAdapter(manager);
//set Adapter to view pager
viewPager.setAdapter(adapter);
//
viewPager.setOffscreenPageLimit(5); // content gone after 3 swipe --> 5 for 5 tab
//set tablayout with viewpager
tabLayout.setupWithViewPager(viewPager);
// adding functionality to tab and viewpager to manage each other when a page is changed or when a tab is selected
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
//Setting tabs from adpater
tabLayout.setTabsFromPagerAdapter(adapter);
// انتخاب یک تب با کد
TabLayout.Tab tab = tabLayout.getTabAt(4);
tab.select();
کلاس PagerAdapter :
کد پیاچپی:
package com.kelidestan.example;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
public class PagerAdapter extends FragmentStatePagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment frag=null;
switch (position){
case 0:
frag = new Fragment_5();
break;
case 1:
frag = new Fragment_4();
break;
case 2:
frag = new Fragment_3();
break;
case 3:
frag = new Fragment_2();
break;
case 4:
frag = new Fragment_1();
break;
}
return frag;
}
@Override
public int getCount() {
return 5;
}
@Override
public CharSequence getPageTitle(int position) {
String title=" ";
switch (position){
case 0:
title="عنوان 1";
break;
case 1:
title="عنوان 2";
break;
case 2:
title="عنوان 3";
break;
case 3:
title="عنوان 4";
break;
case 4:
title="عنوان 5";
break;
}
return title;
}
}
که در آن، Fragment_1 تا Fragment_5 و فایل های xml متناظر با آنها را باید بر اساس محتوای مورد نظرتان برای تب ها طراحی کنید (به مثال های موجود در وب سایت ها مراجعه نمایید).