2016-12-22 3 views
0

Мне удалось реализовать это answer. Использование только одного XML для viewpager, но я хочу реализовать его внутри фрагмента вместо Activity. Я попытался реализовать его во Фрагменте, но viewpager ничего не отображал.ViewPager внутри Фрагмент без использования вложенного фрагмента

Это мой PagerAdapter:

class WizardPagerAdapter extends PagerAdapter { 

    public Object instantiateItem(ViewGroup collection, int position) { 
     Log.i("instantiateItem", "instantiateItem"); 
     int resId = 0; 
     switch (position) { 
      case 0: 
       resId = R.id.llPageOne; 
       break; 
      case 1: 
       resId = R.id.llPageTwo; 
       break; 
     } 
     return collection.findViewById(resId); // I tried replacing this with pager.findViewById(resId) 
    } 

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

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == object; 
    } 

    @Override 
    public void destroyItem(ViewGroup parent, int position, Object object) { 
     View view = (View) object; 
     parent.removeView(view); 
    } 
} 

Это, как я реализовал его:

WizardPagerAdapter adapter = new WizardPagerAdapter(); 
    pager = (ViewPager) view.findViewById(R.id.pager); 
    pager.setAdapter(adapter); 

И это мой XML макет:

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1"> 

    <LinearLayout 
     android:id="@+id/llPageOne" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="PAGE ONE IN" /> 

     <EditText 
      android:id="@+id/etSample" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 
     <EditText 
      android:id="@+id/etSample2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/llPageTwo" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="PAGE TWO IN" /> 

     <EditText 
      android:id="@+id/etTwo" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 

</android.support.v4.view.ViewPager> 

Так в основном то, что я хочу для реализации единого XML-файла для всех представлений ViewPager, но внутри фрагмента. Его было всего несколько месяцев с тех пор, как я научился программировать для андроида, поэтому мне сложно провести время. Заранее спасибо.

Примечание: Если возможно не использовать вложенный фрагмент

+0

Посмотри на это, http://stackoverflow.com/questions/7723964/ replace-fragment-inside-a-viewpager? rq = 1 –

+0

Спасибо за быстрый ответ. Но возможно ли использовать другой фрагмент для просмотров/страницы? Как вы можете видеть в ссылке, которую вы предоставили, OP использует фрагменты в качестве своих представлений/страницы, хотя они были схожими, так что мы оба реализуем viewpager внутри фрагмента. – philip

ответ

0

я думаю, что это будет полезно для вас: https://www.bignerdranch.com/blog/viewpager-without-fragments/

+0

Спасибо, я уже читал этот блог. Мне удается реализовать одиночный макет ViewPager для xml, но так же, как этот блог, используя активность. – philip

Смежные вопросы