7

Mam główną działalność, która obsługuje fragment, który z kolei obsługuje TabLayout (z ViewPager). Wyświetlany jest pasek zakładek, a same zakładki nie są wyświetlane.Tabulatury TabLayout nie pokazano

Tutaj jest kod w głównej aktywności wyświetlania fragment gospodarza:

 Fragment fragment = new BMITabsFragment(); 

     FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).addToBackStack(Constants.BMI_TABS_FRAGMENT).commit(); 

jest mój fragment udostępniający TabLayout, który BMITabsFragment (SA):

public class BMITabsFragment extends Fragment { 
... 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
     mParam1 = getArguments().getString(ARG_PARAM1); 
     mParam2 = getArguments().getString(ARG_PARAM2); 
    } 

} 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    // Get the ViewPager and set it's PagerAdapter so that it can display items 
    ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewpager); 
    viewPager.setAdapter(new BMIFragmentPagerAdapter(getActivity().getSupportFragmentManager(), 
      getActivity())); 

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

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_bmitabs, container, false); 
    return view; 
} 
... 
} 

tę to mój FragmentPagerAdapter:

public class BMIFragmentPagerAdapter extends FragmentPagerAdapter { 

final int PAGE_COUNT = 2; 
private FragmentManager fragmentManager; 
private Context context; 

public BMIFragmentPagerAdapter(FragmentManager fm, Context context) { 
    super(fm); 
    this.context = context; 
    this.fragmentManager = fm; 

} 

public BMIFragmentPagerAdapter(FragmentManager fm) { 
    super(fm); 
    fragmentManager = fm; 

} 

@Override 
public CharSequence getPageTitle(int position) { 
    String[] pageTitles = context.getResources().getStringArray(R.array.page_titles_array); 
    return pageTitles[position]; 
} 

@Override 
public Fragment getItem(int position) { 
    SharedPreferences prefs = context.getSharedPreferences(Constants.SHARED_PREFS_FILE, 0); 
    long patientId = prefs.getLong(Constants.SELECTED_PATIENT_ID, 1); 
    Fragment fragment = null; 
    switch (position){ 
     case 0: 
      return BMITabelleFragment.newInstance(patientId); 

     case 1: 
      return BMIChartFragment.newInstance(patientId); 

     default: 
      return BMITabelleFragment.newInstance(patientId); 
    } 
} 

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

I to jest fragment_bmitabs.xml:

<?xml version="1.0" encoding="utf-8"?> 

<android.support.design.widget.TabLayout 
    android:id="@+id/sliding_tabs" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:tabMode="scrollable" /> 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="0px" 
    android:layout_weight="1" 
    android:background="@android:color/white" /> 

</LinearLayout> 

Mój kod jest oparty na Google Android Przewodnik po https://github.com/codepath/android_guides/wiki/Google-Play-Style-Tabs-using-TabLayout

Co ja tu brakuje?

Uwaga: Używam AppCompatActivity i bibliotek wspierają V4 & v7 i com: android: support: biblioteka,

+0

Prosta aktualizacja w styles.xml - na wzór '