【问题标题】:Call Activity which extends FragmentActivity using Fragment in android在 android 中使用 Fragment 调用扩展 FragmentActivity 的 Activity
【发布时间】:2014-04-13 20:22:49
【问题描述】:

我有 tabLayout 的活动,使用 ViewPager

代码:

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 活动。但它显示错误。这个怎么称呼?

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

【问题讨论】:

  • 你遇到了什么错误?发布它。
  • Home 必须是 Fragment 而不是 Activity。您不能将 Activity 作为项目放入 ViewPager!确保Home 是一个片段。
  • @Fllo,查看更新后的帖子。
  • 出现错误是因为Home 确实不是片段。据我了解,Home 是一个具有内部 ViewPager 的片段,不是吗?

标签: android android-fragments android-viewpager


【解决方案1】:

您可以在Fragment 中使用ViewPager。您必须将 inner fragmentnested fragments 方法一起使用,您可以在文档中阅读:

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

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多