Jomia
Jomia

Reputation: 3404

Tab content is not showing when using fragment

I am trying to create a scrollable tabs using fragment.

Tabs are showing and scrolling also. But the problem is the tab content is not showing. I am using fragments to show the contents. I am new in this topic : fragment. Am I missing anything in this code?

Please help me.

public class SrollableTab extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        ActionBar bar = getActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
        bar.addTab(createTab("Tab 1"));
        bar.addTab(createTab("Tab 2"));
        bar.addTab(createTab("Tab 3"));
        bar.addTab(createTab("Tab 4"));
        bar.addTab(createTab("Tab 5"));
        bar.addTab(createTab("Tab 6"));

        if (savedInstanceState != null) {
            bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
        }
    }

    public Tab createTab(String tabTitle)
    {
        ActionBar bar = getActionBar();     
        Tab tab = bar.newTab().setText(tabTitle).setTabListener(new TabFragment());
        return tab;
    }

    class TabFragment extends Fragment implements TabListener
    {

        @Override
        public void onCreate(Bundle fragmentState)
        {
            super.onCreate(fragmentState);              
        }
        @Override
        public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedState)
        {       
            View view = inflator.inflate(R.layout.tab_content, container, false);
            TextView t = (TextView)view.findViewById(R.id.txtTab);
            t.setText("tab content");   
            return view;

        }
        @Override
        public void onActivityCreated(Bundle savedState)
        {
            super.onActivityCreated(savedState);
        }

        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {

        }

        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {

        }

        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {

        }   
    }
}

tab_content.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffffff" >

    <TextView android:id="@+id/txtTab" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="hello"  
        android:textColor="#ff0000"/>
</LinearLayout>

Upvotes: 3

Views: 850

Answers (1)

ralphgabb
ralphgabb

Reputation: 10538

This may be old but found my own solution on this.

I've use PagerSlidingTabStrip for a while now until I start using the new material TabLayout. Both works on Activity, but not on Fragments. This are some discussion about the bug on fragments.

The fix I've come up with is, on settings viewpager's adater (usually extended with FragmentPagerAdapter) on its constructor parameter it needs FragmentManager, instead of using the activity's FragmentManager use the fragment's one instead which is getChildFragmentManager().

That fix it. Android bugs still annoys me though.

Cheers

Upvotes: 2

Related Questions