Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You should not put a <code>Fragment</code> inside a <code>Fragment</code>. You can however put a <code>ViewPager</code> inside a fragment and get the result you're looking for.</p> <p>I was facing the same issue a while ago for one of my apps (only I wanted the <code>ViewPager</code> to contain some <code>ListView</code>s). This was the end result (see the lines; red contains <code>Fragment</code>, blue <code>ViewPagerIndicator</code>, green <code>ViewPager</code>):</p> <p><img src="https://i.stack.imgur.com/sdcUO.png" alt="Example ViewPager inside a Fragment"></p> <p>I accomplished this with the following steps. Fist, for the detail-fragment, I created the following XML file:</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"&gt; &lt;com.viewpagerindicator.TabPageIndicator android:id="@+id/viewpagerIndicator" android:layout_height="wrap_content" android:layout_width="match_parent" /&gt; &lt;android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /&gt; &lt;/LinearLayout&gt; </code></pre> <p>Then, I set up a custom PagerAdapter to populate the ViewPager and the TabPageIndicator:</p> <pre><code>public class MainPagerAdapter extends PagerAdapter implements TitleProvider { // constructor ... @Override public void destroyItem(ViewGroup container, int position, Object object) { // remove the object (we don't want to keep it in memory as it will get recreated and cached when needed) ViewPager viewPager = (ViewPager) container; View view = (View) object; viewPager.removeView(view); } @Override public Object instantiateItem(View pager, final int position) { // inflate your 'content'-views here (in my case I added a listview here) // similar to a listadapter's `getView()`-method View wrapper = ... // inflate your layout ... // fill your data to the appropriate views ((ViewPager) pager).addView(wrapper); } public String getTitle(int position) { ... // return the title of the tab } } </code></pre> <p>Next, in my fragment, I set the following:</p> <pre><code>public class MainFragment extends Fragment { private MainPagerAdapter pagerAdapter; private TabPageIndicator mIndicator; private ViewPager viewPager; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); View detailsFrame = context.findViewById(R.id.details_fragment); // setup your adapter: pass data, etc. this.pagerAdapter = new MainPagerAdapter(...); this.viewPager = (ViewPager) context.findViewById(R.id.viewpager); viewPager.setAdapter(pagerAdapter); this.mIndicator = (TabPageIndicator) context.findViewById(R.id.viewpagerIndicator); this.mIndicator.setViewPager(viewPager); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload