【发布时间】:2014-09-23 05:44:44
【问题描述】:
我的例子是由一个Mainactivity.java(FragmentActivity)、一个叫Fragment_ViewPager(Fragment)的Fragment、一个适配器Adapter_ViewPager(FragmentPagerAdapter)和三个fragment组成的普通fragment Fragment extentienden并有一个方法onCreateView。
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>
片段的滑动效果很好,但问题是当我将设备的方向从纵向更改为水平时,滑动不起作用并且在垂直方向之前只显示 fagemnto ... 我想知道我做错了什么,因为 viewpager 必须在 FragmentAcitivity 中运行,但是对于这个例子,我必须扩展 Fragment 以使用dentrod FrameLayout,看起来像它的getActivity()。 GetSupportFragmentManager () 我将他发送给 Adpater 的第二次操作不正确。
【问题讨论】:
标签: java android android-layout android-fragments