1

我试图在我的应用程序中实现 PagerSlidingTabStrip,但它只是不起作用。我做了样本中所做的一切,但它不起作用。选项卡指示器没有按预期移动,应用程序也没有崩溃。基本上什么都没有发生。我不知道出了什么问题。

MainActivity 代码

public class MainActivity extends FragmentActivity implements TabListener {

ActionBar aBar;
ViewPager vPager;
PagerAdapter pAdapter;
PagerSlidingTabStrip slidingTabStrip;

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

    // Action Bar
    aBar = getActionBar();
    aBar.setTitle("Beautiful Voice Recorder");
    aBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Variables    
    slidingTabStrip = (PagerSlidingTabStrip) findViewById(R.id.slidingTabs);
    vPager = (ViewPager) findViewById(R.id.pager);
    pAdapter = new PagerAdapter(getSupportFragmentManager());

    // Tabs     
    vPager.setAdapter(pAdapter);
    slidingTabStrip.setViewPager(vPager);

    aBar.addTab(aBar.newTab().setText("Record").setTabListener(this));
    aBar.addTab(aBar.newTab().setText("Library").setTabListener(this));

    vPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
            LibraryFragment listViewFragment = (LibraryFragment)pAdapter.instantiateItem(vPager, 1);
            RecordFragment recordFragment = (RecordFragment)pAdapter.instantiateItem(vPager, 0);
            listViewFragment.updateComponents();
            // Pause mp if it's playing and tabs are switched just in case
            if (listViewFragment.mp.isPlaying())
            {
                listViewFragment.mp.pause();
                listViewFragment.playPause.setBackgroundResource(R.drawable.play_button_selector);
            }
            if (recordFragment.isRecording)
            {
                recordFragment.stopRecording();
            }
            aBar.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) {
    vPager.setCurrentItem(tab.getPosition());
}

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

}

}

class PagerAdapter extends FragmentPagerAdapter{

String[] pageTitles = { "Record", "Library" };  

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

@Override
public Fragment getItem(int arg0) {
    Fragment fragment = new Fragment();
    if (arg0 == 0)
    {
        fragment = new RecordFragment();
    }
    if (arg0 == 1)
    {
        fragment = new LibraryFragment();
    }
    return fragment;
}

@Override
public int getCount() {
    return pageTitles.length;
}

@Override
public CharSequence getPageTitle(int position) {

    return pageTitles[position];
}

}

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/slidingTabs"
    android:layout_width="match_parent"
    android:layout_height="48dip" />

<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="match_parent" />

</RelativeLayout>

有谁知道为什么我的代码不起作用?

4

2 回答 2

2

我认为即使它是RelativeLayout,您也没有找到ViewPager。

所以试试我正在使用的这段代码。我希望它对你有帮助。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <com.astuetz.PagerSlidingTabStrip
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="48dip"
            />
    <com.flitto.app.widgets.MainViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/tabs"
            tools:context=".MainTabActivity"/>
</RelativeLayout>
于 2014-05-14T08:30:37.027 回答
0

在深入查看示例代码后,我发现了问题所在。问题是我仍然在代码中保留了以前的ActionBar 选项卡,并且这些选项卡与PagerSlidingTabStrip 选项卡重叠,因此我看不到它们。

我所要做的就是删除对 ActionBar 选项卡的所有引用,它就起作用了!

于 2014-05-13T12:29:01.530 回答