使用视图页面滑块(图像 + 点)使用 ViewPagerLibrary 滑动选项卡



我正在尝试使用ViewPager(图像+点(编写滑动选项卡,但我面临两个小问题,请阅读以下内容:

1(. 在 TabPagerAdapter 类获取的这一行return new TabFragmentA();

Type mismatch: cannot convert from TabFragmentA to Fragment

2(. 在 TabFragmentA 类中的这一行new ImagesFragmentAdapter(getSupportFragmentManager());得到:

The method getSupportFragmentManager() is undefined for the type TabFragmentA

我正在使用 AppCompat Library

~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class MainActivity extends FragmentActivity {
    ViewPager Tab;
    TabPagerAdapter TabAdapter;
    ActionBar actionBar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TabAdapter = new TabPagerAdapter(getSupportFragmentManager());
        Tab = (ViewPager)findViewById(R.id.pager);
        Tab.setOnPageChangeListener(
                new ViewPager.SimpleOnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {
                        actionBar = getActionBar();
                        actionBar.setSelectedNavigationItem(position);                    }
                });
        Tab.setAdapter(TabAdapter);
        actionBar = getActionBar();
        //Enable Tabs on Action Bar
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.TabListener tabListener = new ActionBar.TabListener(){
            @Override
            public void onTabReselected(android.app.ActionBar.Tab tab,
                    FragmentTransaction ft) {
                // TODO Auto-generated method stub
            }
            @Override
             public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
                Tab.setCurrentItem(tab.getPosition());
            }
            @Override
            public void onTabUnselected(android.app.ActionBar.Tab tab,
                    FragmentTransaction ft) {
                // TODO Auto-generated method stub
            }};
            //Add New Tab
            actionBar.addTab(actionBar.newTab().setText("Tab - A").setTabListener(tabListener));
            actionBar.addTab(actionBar.newTab().setText("Tab - B").setTabListener(tabListener));
            actionBar.addTab(actionBar.newTab().setText("Tab - C").setTabListener(tabListener));
    }
}

~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class TabPagerAdapter extends FragmentStatePagerAdapter {
    public TabPagerAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }
    @Override
    public Fragment getItem(int i) {
        switch (i) {
        case 0:
            //Fragement for Android Tab
            return new TabFragmentA();
        case 1:
           //Fragment for Ios Tab
            return new TabFragmentB();
        case 2:
            //Fragment for Windows Tab
            return new TabFragmentC();
        }
        return null;
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 3; //No of Tabs
    }
}

获取:

Type mismatch: cannot convert from TabFragmentA to Fragment

~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public abstract class BaseImagesFragment extends Fragment {
    private static final Random RANDOM = new Random();
    TestFragmentAdapter mAdapter;
    ViewPager mPager;
    PageIndicator mIndicator;
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getActivity().getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.random:
                final int page = RANDOM.nextInt(mAdapter.getCount());
                Toast.makeText(getActivity(), "Changing to page " + page, Toast.LENGTH_SHORT);
                mPager.setCurrentItem(page);
                return true;
            case R.id.add_page:
                if (mAdapter.getCount() < 10) {
                    mAdapter.setCount(mAdapter.getCount() + 1);
                    mIndicator.notifyDataSetChanged();
                }
                return true;
            case R.id.remove_page:
                if (mAdapter.getCount() > 1) {
                    mAdapter.setCount(mAdapter.getCount() - 1);
                    mIndicator.notifyDataSetChanged();
                }
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class TabFragmentA extends BaseImagesFragment {
    @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
         View android = inflater.inflate(R.layout.android_frag, container, false);
            mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
            mPager = (ViewPager)android.findViewById(R.id.pager);
            mPager.setAdapter(mAdapter);
            mIndicator = (CirclePageIndicator)android.findViewById(R.id.indicator);
            mIndicator.setViewPager(mPager);
            return android;
    }
}

获取:

The method getSupportFragmentManager() is undefined for the type TabFragmentA

~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public abstract class ImagesFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter {
    private int[] Images = new int[] { 
            R.drawable.flower_01, R.drawable.flower_02,
            R.drawable.flower_03, R.drawable.flower_04  };   
    private int mCount = Images.length;
    public ImagesFragmentAdapter(FragmentManager fm) {
        super(fm);
    }
    @Override
    public Fragment getItem(int position) {
        return null;
    }
    @Override
    public int getCount() {
        return mCount;
    }
    public void setCount(int count) {
        if (count > 0 && count <= 10) {
            mCount = count;
            notifyDataSetChanged();
        }
    }
}

试试这个:

1( getSupportFragmentManager()可从位于android-rootsdkextrasandroidsupportv7appcompat的SupportLibrary(appcompat项目(获得android.support.v4.app.FragmentActivity。如果那里没有,那么可以从Android SDK Manager轻松下载 - "Extras/Android Support Library"(

2( 您扩展了错误的片段类。导入android.support.v4.app.Fragment而不是android.app.Fragment

Change TabFragmentA

   mAdapter = new TestFragmentAdapter(getSupportFragmentManager());

mAdapter = new TestFragmentAdapter( getChildFragmentManager());

最新更新