调用Activity在android中使用Fragment扩展FragmentActivity

时间:2014-04-13 11:24:50

标签: android android-fragments android-viewpager

我使用tabLayoutViewPager的活动。

代码:

public class Home extends FragmentActivity implements ActionBar.TabListener {

private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;

private String[] tabs = { "Instant Opportunity", "Events", "Experts" };

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

    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

    viewPager.setAdapter(mAdapter);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Adding Tabs
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }

    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
            // on changing the page
            // make respected tab selected
            actionBar.setSelectedNavigationItem(position);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}

} Slider的另一项活动,代码如下:

private void displayView(int position) {
    // update the main content by replacing fragments

    Fragment fragment = null;
    switch (position) {
    case 0:
        fragment = new Home();
        break;
    case 1:
        fragment = new Gallery();
        break;
    default:
        break;
    }

现在,在案例0:我想称之为Home活动。但它显示错误。怎么称呼这个?

当我把光标放在新的Home()上时,它说无法从Home转换为Fragment。

1 个答案:

答案 0 :(得分:1)

您可以在ViewPager内使用Fragment。您必须使用nested fragments方法使用内部片段,您可以阅读文档:

  

您现在可以将片段嵌入到片段中。这对于您希望将动态和可重用UI组件放入UI组件的各种情况非常有用,该UI组件本身是动态的并且是可用。 例如,如果您使用ViewPager创建左右滑动并占用大部分屏幕空间的片段,则现在可以将片段插入每个片段页面。

您需要将Home更改为extends Fragment并使用getChildFragmentManager()方法作为适配器。关于这种行为有一些有关的帖子:

希望这有帮助。