簡體   English   中英

框架布局內的viewpager

[英]viewpager inside of framelayout

我的示例由Mainactivity.java(FragmentActivity),稱為Fragment_ViewPager的片段(Fragment),適配器Adapter_ViewPager(FragmentPagerAdapter)和三個片段組成,這三個片段是fragmentienden的常見片段,並具有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>

滑動片段的效果很好,但是問題是當我將設備的方向從縱向更改為水平設備時,滑動不起作用,並且在垂直方向顯示之前僅顯示fragemnto ...我不知道我在做什么,因為viewpager必須在FragmentAcitivity中運行,但是對於本示例,我不得不擴展Fragment以使用dentrod的FrameLayout,看起來像它的getActivity()。 我第二次將他發送給Adpater的GetSupportFragmentManager()無法正常運行。

除默認constructor(FragmentManager)之外,不要對Adapter_ViewPager類使用其他構造constructor(FragmentManager)

我認為,當您的活動重新開始時,Android會調用默認的構造函數,而ICONS將為null。

嘗試在此處放置一個斷點,然后看一下旋轉后ICONS的值是多少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM