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

标签 android android-fragments android-viewpager

我有使用 ViewPagertabLayout Activity 。

代码:

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的activity,代码如下:

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

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

最佳答案

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

You can now embed fragments inside fragments. This is useful for a variety of situations in which you want to place dynamic and re-usable UI components into a UI component that is itself dynamic and re-usable. For example, if you use ViewPager to create fragments that swipe left and right and consume a majority of the screen space, you can now insert fragments into each fragment page.

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

希望这对您有所帮助。

关于android - 在 android 中使用 Fragment 调用扩展 FragmentActivity 的 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23042120/

相关文章:

android - ArrayAdapter 更改为 ListView 但 onClickListener 不知道

Android:在 ViewPager 中更改文本

android - 我可以添加 AnimationListener 进行 fragment 翻译吗

android:在 viewpager 中使用 gridview 显示 156 张图像

android - 标签标题不显示

android - 从 ViewTreeObserver 中移除监听器

java - 为 Cloud Endpoints 类生成 API 元数据失败

android - phonegap android 中的 Admob 突然停止工作

可扩展 ListView 中的 android:divider 属性使我在 Android 6.01 中的应用程序崩溃

android - Android 中 TabHost 中每个 fragment 的自定义返回堆栈