【问题标题】:FragmentPagerAdapter using ViewPagerIndicator not workingFragmentPagerAdapter 使用 ViewPagerIndicator 不起作用
【发布时间】:2012-09-11 19:09:19
【问题描述】:

我决定使用 ViewPagerIndicator 和 TitlePageIndicator 重新制作我的应用程序的 UI,但我有以下问题:

1) 不显示每个页面的片段。

2) 在两个页面之间滑动不起作用。

我使用 ActionBarSherlock 就像使用标签一样。

我没有更改 Fragmens 中的任何内容,因为当我使用选项卡时它的工作正常,并且我编写了以下代码:

public class CustomFragmentAdapter extends FragmentPagerAdapter {


    private final String[] TITLES = new String[] { 
            "General",
            "Companies",
            "Discounts"


    };

    public final int NUM_TITLES = TITLES.length;

    public CustomFragmentAdapter(FragmentManager fm) {      
        super(fm);

    }

    @Override
    public Fragment getItem(int position) { 

        Log.v("POSITION", "position: "+position);
        switch (position) {
            case 0:
                return new General();
            case 1:
                return new Companies();
            case 2:
                return new Discounts();
        }

        return null;
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        return TITLES[position % NUM_TITLES].toUpperCase();
    }
}

和

mViewPager = (ViewPager)findViewById(R.id.pager);

    mViewPager.setAdapter(new CustomFragmentAdapter(getSupportFragmentManager()));

    TitlePageIndicator indicator = (TitlePageIndicator) findViewById(R.id.indicator);

    indicator.setViewPager(mViewPager);
    indicator.setCurrentItem(0);

还有我的 XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"

>

<com.viewpagerindicator.TitlePageIndicator
    android:id="@+id/indicator"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    />

<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>

正如我所见,大多数教程和示例都与我的代码相似,但我仍然无法使其工作。我几乎尝试了一切。当我在其中放置一些带有 TextView 的虚拟片段时,它也不起作用。我也尝试删除 ViewPagerIndicator 并仅尝试 ViewPager,但它对我不起作用。

我可能遗漏了一些东西,但我找不到。 非常感谢您的建议。

【问题讨论】:

  • 本题与ViewPagerIndicator无关。这是一个 ViewPager 问题。
  • 你能看到 getItem() 至少被调用一次(当当前 Fragment 被实例化时)?我的意思是,你使用 Log.v 的地方
  • 我可以看到它被唤起三遍。在我启动应用程序后,它会为位置 0 和 1 调用两次,然后当我点击项目 Companies 或 Discounts 时,它会再次为位置 2 调用。
  • 所以您的适配器可能工作正常。也许您实例化片段的方式是错误的?试过了吗?:androiddesignpatterns.com/2012/05/…
  • 我曾尝试按照文章中描述的静态方式创建实例,但没有帮助。

标签: android viewpagerindicator fragmentpageradapter


【解决方案1】:

我从类似的 Activity 中看到的一个区别是您没有设置寻呼机的当前项目:

mViewPager.setCurrentItem(0, false);

【讨论】:

  • 我试图将这一行添加到我的代码中,但不幸的是它没有帮助我。
【解决方案2】:

我发现了活动布局xml中缺少android:orientation="vertical"的问题

【讨论】:

    猜你喜欢
    • 2015-12-09
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多