2014-09-22 56 views
0

我的例子是由一個Mainactivity.java(FragmentActivity),一個叫Fragment_ViewPager(Fragment)的片段,一個Adapter_ViewPager(FragmentPagerAdapter)和三個片段組成的通用片段組成,並且有一個方法onCreateView。viewpager framelayout

Mainactivity.java

public class MainActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     FragmentManager FM = getSupportFragmentManager(); 
     FragmentTransaction FT = FM.beginTransaction(); 

     Fragment_ViewPager f_pager = new Fragment_ViewPager(); 
     FT.add(R.id.fragment_container, f_pager); 
     FT.commit(); 

    } 
} 

activity_main.xml中

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/fragment_container" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

</FrameLayout> 

Fragment_ViewPager.java

private static final int[] ICONS = new int[] { R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher }; 
    private FragmentPagerAdapter mFragmentPagerAdapter; 
    private ViewPager mViewPager; 
    private TabPageIndicator mTabPagerIndicator; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.f_pager, container, false); 

     mFragmentPagerAdapter = new Adapter_ViewPager(getActivity().getSupportFragmentManager(), ICONS); 
     mViewPager = (ViewPager)v.findViewById(R.id.view_pager_inicio); 
     mViewPager.setAdapter(mFragmentPagerAdapter); 
     mTabPagerIndicator = (TabPageIndicator)v.findViewById(R.id.tab_indicator_inicio); 
     mTabPagerIndicator.setViewPager(mViewPager); 


     return v; 

    } 

fragment_viewpager.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" > 


    <com.viewpagerindicator.TabPageIndicator 
     android:id="@+id/tab_indicator_inicio" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     /> 

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

</LinearLayout> 

Adapter_ViewPager.java

private static int[] ICONS = null; 
    private Fragment mFragment = null; 

    public Ad_inicio(FragmentManager fm, int[] icons) { 
     super(fm); 
     ICONS = icons; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
     case 0: 
      mFragment = new Fragmento_uno(); 
      break; 
     case 1: 
      mFragment = new Fragmento_dos(); 
      break; 
     case 2: 
      mFragment = new Fragmento_tres(); 
      break; 
     default: 
      break; 
     } 
     return mFragment; 
    } 



    @Override 
    public int getIconResId(int index) { 
     return ICONS[index]; 
    } 

    @Override 
    public int getCount() { 
     return ICONS.length; 
    } 

Fragment_One.java

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.fragmento_One, container, false); 

     return v; 

    } 

fragment_one.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" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="uno" /> 

</LinearLayout> 

作品的片段以及輕掃,但問題是,當我從改變方向縱向我的設備horizintal,刷卡不工作,並顯示只有fragemnto在垂直方向之前是可見的... 我不知道我在做什麼錯誤,因爲viewpager必須在FragmentAcitivity中操作,但對於這個例子,我不得不擴展Fragment來使用dentrod一個FrameLayout,看起來像它的getActivity()。 GetSupportFragmentManager(),我發送他到Adpater第二次不正確運行。

回答

0

對於Adapter_ViewPager類,請勿使用其他構造函數,而不要使用默認的constructor(FragmentManager)

我認爲,當您的活動重新啓動時,Android會調用默認構造函數,並且ICONS將爲空。

試着在那裏放置一個斷點,然後看看旋轉後ICONS的值是多少。

+0

非常感謝您的回答.. 我只是試圖把一個斷點,如果它返回一個數字圖標3,似乎問題是我再次認識到在主要活動中發現的FragmentManaget片段.. 什麼我試圖做的就是這樣的事情。 http://s21.postimg.org/a497zxtxz/Imagen_View_Pager.png – 2014-09-22 22:20:34

+0

我通過更改由getChildFragmentManager()接收FragmentPagerAdapter的getSupportFragmentManager()來解決該問題,但現在問題在於改變了方向,當時顯示的片段保持在另一片之上,好像沒有被擦除。 – 2014-09-23 16:47:53