0

(私はこれに慣れていないので、私が言っていることがあまり意味をなさない場合は申し訳ありません)

actionbarsherlock とフラグメントを使用してスワイプを実装しました。テストした後、スワイプは 3 つあるのに、タブは 2 つしかないことに気付きました。私は2つのフラグメントしか作成していないと確信しています。どういうわけか 1 つのタブが倍増しているように見えますが、その理由はわかりません。これを行うために、ここからいくつかの指示に従いました。

これが私のメインクラスです:

public class DashboardActivity extends SherlockFragmentActivity {
    com.actionbarsherlock.app.ActionBar mActionBar;
    ViewPager mPager;
    com.actionbarsherlock.app.ActionBar.Tab tab;

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

        // Activate the navigation mode tabs
        mActionBar = getSupportActionBar();
        mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Locate the view pager in dashboard.xml
        mPager = (ViewPager) findViewById(R.id.pager);

        // Activate the fragment manager
        FragmentManager fm = getSupportFragmentManager();

        // Capture view pager swipes
        ViewPager.SimpleOnPageChangeListener ViewPagerListener = new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                // Find the view pager position
                mActionBar.setSelectedNavigationItem(position);
            }
        };

        mPager.setOnPageChangeListener(ViewPagerListener);
        // Locate the adapter class
        ViewPagerAdapter viewpageradapter = new ViewPagerAdapter(fm);
        // Set the view pager adapter in ViewPager
        mPager.setAdapter(viewpageradapter);

        // Capture the button clicks API ERROR
        TabListener tabListener = new TabListener() {

            @Override
            public void onTabSelected(
                    com.actionbarsherlock.app.ActionBar.Tab tab,
                    FragmentTransaction ft) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onTabUnselected(
                    com.actionbarsherlock.app.ActionBar.Tab tab,
                    FragmentTransaction ft) {
                mPager.setCurrentItem(tab.getPosition());

            }

            @Override
            public void onTabReselected(
                    com.actionbarsherlock.app.ActionBar.Tab tab,
                    FragmentTransaction ft) {
                // TODO Auto-generated method stub

            }
        };

        // Create the first tab
        tab = mActionBar.newTab().setText("Support Tab")
                .setTabListener(tabListener);
        mActionBar.addTab(tab);

        // Create the second tab
        tab = mActionBar.newTab().setText("Students Tab")
                .setTabListener(tabListener);
        mActionBar.addTab(tab);

    }
}

ここに 1 つのフラグメントがあります: (もう一方は同じです)

public class StudentsTab extends SherlockListFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        String[] studentItems = getResources().getStringArray(
                R.array.studentItems);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity()
                .getBaseContext(), android.R.layout.simple_list_item_1,
                studentItems);

        setListAdapter(adapter);

        return super.onCreateView(inflater, container, savedInstanceState);
    }
}

ViewPagerAdapter は次のとおりです。

public class ViewPagerAdapter extends FragmentPagerAdapter {

// Declare the number of tabs
    final int PAGE_COUNT = 2;

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

    @Override
    public Fragment getItem(int arg0) {
        Bundle data = new Bundle();
        switch (arg0) {
        // Open support tab
        case 0:
            SupportTab supportTab = new SupportTab();
            data.putInt("current_page", arg0 + 1);
            supportTab.setArguments(data);
            return supportTab;

        case 1:
            StudentsTab studentTab = new StudentsTab();
            data.putInt("current_page", arg0 + 1);
            studentTab.setArguments(data);
            return studentTab;
        }

        return null;

    }

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

私のメインxml

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

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </android.support.v4.view.ViewPager>

</RelativeLayout>

何が起こっているのかわかりません。できれば助けてください。ありがとうございました!

4

0 に答える 0