1

私は ViewPager を使用しており、ボタンでページを変更しています。動作するようになりましたが、パフォーマンスに一貫性がありません。たまに反応しなくなる時があります。タッチでスクロールできますが、ボタンは機能しません。いくつかのフラグメントを持つ ViewPager があります。FragmentActivity の ViewPager コードは次のとおりです。

private void initializeViewPager() {
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mSectionsPagerAdapter);
    mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

        ActionBar actionBar = getActionBar();

            @Override
            public void onPageSelected(int position) {
                currentPage = position;
            }

            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageScrollStateChanged(int state) {
                Log.d(TAG, "onPageScrollStateChanged: " + state);

            }

        });
}

これは、フラグメントの 1 つのコードです。

// FragmentActivity から ViewPager を参照する

static ViewPager mViewPager = MainActivity.mViewPager;

// onClick と setPagerItem を登録

ImageView next = (ImageView)v.findViewById(R.id.ic_menu_next);
    next.requestFocus();
    next.setOnClickListener(new OnClickListener() {
     @Override
           public void onClick(View view) {
               mViewPager.setCurrentItem(getItem(+1), true);
           }

        });

// これにより、ViewPager 内のどこにいるかが分かります

private static int getItem(int i) {
    int a = mViewPager.getCurrentItem();
    i += a;
    return i;
}

助言がありますか?

4

1 に答える 1

2

currentPageポジションにフィールドを使用してみてください。ViewPager で getCurrentItem() を呼び出しても、位置を取得するために正しく機能しないようです。

mViewPager.setCurrentItem(currentPage + 1, true);
于 2012-11-14T17:08:52.877 に答える