我的例子是由一個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第二次不正確運行。
非常感謝您的回答.. 我只是試圖把一個斷點,如果它返回一個數字圖標3,似乎問題是我再次認識到在主要活動中發現的FragmentManaget片段.. 什麼我試圖做的就是這樣的事情。 http://s21.postimg.org/a497zxtxz/Imagen_View_Pager.png – 2014-09-22 22:20:34
我通過更改由getChildFragmentManager()接收FragmentPagerAdapter的getSupportFragmentManager()來解決該問題,但現在問題在於改變了方向,當時顯示的片段保持在另一片之上,好像沒有被擦除。 – 2014-09-23 16:47:53