FragmentPagerAdapter不能与BaseActitvty一起使用

时间:2014-12-29 21:04:57

标签: android android-viewpager fragmentpageradapter

我的Activity中有一个简单的FragmentPageAdapter,它运行正常。现在我想从BaseActivity扩展,因为我在BaseActivity中实现了一个导航抽屉。因此我无法扩展FragmentActivity类,我尝试声明FragmentActivity对象,但我总是得到错误java.lang.IllegalStateException:Activity已被销毁。我该如何处理这个问题?

public class MainActivity extends BaseActivity {

FragmentPagerAdapter adapterViewPager;
FragmentActivity fa;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FragmentActivity fa = new FragmentActivity();
    adapterViewPager = new MyPagerAdapter(fa.getSupportFragmentManager());

    ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
    pager.setAdapter(adapterViewPager);
    pager.setAdapter(new MyPagerAdapter(fa.getSupportFragmentManager()));


}

private class MyPagerAdapter extends FragmentPagerAdapter {

    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int pos) {
        switch(pos) {
        case 0: // Fragment # 0 - This will show FirstFragment
            return SlideFragment.newInstance(0, "Page # 1");
        case 1: // Fragment # 0 - This will show FirstFragment different title
            return SlideFragment.newInstance(1, "Page # 2");
        case 2: // Fragment # 1 - This will show SecondFragment
            return SlideFragment.newInstance(2, "Page # 3");
        default:
            return null;
        }
    }

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

@Override
protected int getLayoutResourceId() {
    // TODO Auto-generated method stub
    return R.layout.activity_main;
}



}

2 个答案:

答案 0 :(得分:0)

您不需要在MainActivity中使用FragmentActivity对象。只需在BaseActivity类中扩展FragmentActivity。

答案 1 :(得分:0)

永远不要手动创建活动对象。你总是在一些活动类里面(正确实例化)。 您需要的是扩展FragmentActivity的BaseActivity。