android - why fragment doesn`t show up with ViewPagerIndicator -


i have activity content view fragment, added viewpager , viewpagerindicator activity. created fragmentpageradapter pager, adapter constructs 3 fragments displaying 3 tabs. when run project, see pager title shows up. why doesn`t 3 fragments show up?

i created pager , indicator on create of activity lifecycle.

    public class browseractivity extends sherlockfragmentactivity                         implements reposfragment.onfileselectedlistener, starredfragment.onstarredfileselectedlistener, onbackstackchangedlistener {     super.oncreate(savedinstancestate);     setcontentview(r.layout.seadroid_main);     adapter = new seafiletabsadapter(getsupportfragmentmanager());      pager = (viewpager) findviewbyid(r.id.pager);     pager.setadapter(adapter);      tabpageindicator indicator = (tabpageindicator)findviewbyid(r.id.indicator);     indicator.setviewpager(pager);     indicator.setonpagechangelistener(new onpagechangelistener() {         @override         public void onpageselected(final int position) {             currentposition = position;             supportinvalidateoptionsmenu();             disableupbutton();         }          @override         public void onpagescrollstatechanged(int arg0) {             // todo auto-generated method stub         }          @override         public void onpagescrolled(int arg0, float arg1, int arg2) {             // todo auto-generated method stub         }     }); 

the adapter constructs 3 fragments displaying 3 tabs view

class seafiletabsadapter extends fragmentpageradapter implements iconpageradapter {     public seafiletabsadapter(fragmentmanager fm) {         super(fm);     }      private reposfragment reposfragment = null;     private activitiesfragment activitiefragment = null;     private starredfragment starredfragment = null;      @override     public fragment getitem(int position) {         switch (position) {         case 0:             if (reposfragment == null) {                 reposfragment = new reposfragment();             }             return reposfragment;         case 1:             if (starredfragment == null) {                 starredfragment = new starredfragment();             }             return starredfragment;         case 2:             if (activitiefragment == null) {                 activitiefragment = new activitiesfragment();             }             return activitiefragment;         default:             return new fragment();         }     }      @override     public charsequence getpagetitle(int position) {         switch (position) {         case 0:             return getstring(r.string.tabs_library).touppercase();         case 1:             return getstring(r.string.tabs_starred).touppercase();         case 2:             return getstring(r.string.tabs_activity).touppercase();          default:             return null;         }     }      @override     public int geticonresid(int index) {         return icons[index];     }      @override     public int getcount() {         return icons.length;     } } 

the layout file seadroid_main.xml

<framelayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment_container" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.viewpagerindicator.tabpageindicator     android:id="@+id/indicator"     android:layout_height="wrap_content"     android:layout_width="match_parent"     /> <android.support.v4.view.viewpager     android:id="@+id/pager"     android:layout_width="fill_parent"     android:layout_height="0dp"     android:layout_weight="1"     /> 


update
have found viewpager tutorials used linealayout root container. necessary change fragmentlayout linealayout here. when changed linealayout, app crashed, , log is

    12-02 07:01:13.636: e/androidruntime(3807): java.lang.runtimeexception: unable start activity componentinfo{com.seafile.seadroid2/com.seafile.seadroid2.ui.activity.browseractivity}: android.view.inflateexception: binary xml file line #21: error inflating class linealayout 12-02 07:01:13.636: e/androidruntime(3807):at android.app.activitythread.performlaunchactivity(activitythread.java:2184) 

try switching root view in xml linearlayout. right using framelayout, has effect of putting viewpager on top of tabpageindicator. also, since layout_height 0, you're not going see fragments. suspect problem -- meant use linearlayout.

also, careful seafiletabsadapter class. right caching fragments, seemed logical me when started using fragmentpageradapter too. however, fragmentpageradapter caches fragments too, have danger of memory leak approach. if want call getitem directly, without auto-creating fragment each time, can first call findfragmentbytag see if fragment there yet. string android uses tag can found in source, or in question: replace fragment inside viewpager

hope helps. i'm still bit confused code, because in description have viewpager inside fragment, posted code seems show viewpager inside activity.

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@+id/fragment_container"     android:orientation="vertical"     android:layout_width="match_parent"     android:layout_height="match_parent">     <com.viewpagerindicator.tabpageindicator         android:id="@+id/indicator"         android:layout_height="wrap_content"         android:layout_width="match_parent"         />     <android.support.v4.view.viewpager         android:id="@+id/pager"         android:layout_width="fill_parent"         android:layout_height="0dp"         android:layout_weight="1"         /> </linearlayout> 

i hope answers concern in comment. if instead mean sherlock code expecting framelayout root view (this surprise me, although haven't used it), need put linearlayout above child of framelayout had before. make sense?


Comments

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -