3

Activity にこのコードがある場合onCreate():

mViewPager = new ViewPager(this, null);
mPagerAdapter = new PagerAdapter(this);
mViewPager.setAdapter(mPagerAdapter);
mCirclePageIndicator.setViewPager(mViewPager);
mCirclePageIndicator.setOnPageChangeListener(onPageChangeListener);

次に、AsyncTask を起動し、現在のページをonPostExecute()ページ 0 に変更したい場合、機能しません。!= 0 の他のページでも機能しますが、0 の場合は現在の位置を保持するだけです。

mCirclePageIndicator.setCurrentItem(0);

誰かがアイデアを思いついたら、遠慮なく共有してください。ありがとう !

4

3 に答える 3

3

回避策:

最初に別のページを現在のページとして設定し、次にページ 0 に設定します。はい、遅れていることはわかっていますが、そもそもなぜ機能しないのかについての説明はまだ見つかりません。Handler遅れてでも投稿しようとしましたが、何もしませんでした。なだ。

mCirclePageIndicator.setCurrentItem(1);
mCirclePageIndicator.setCurrentItem(0);
于 2013-04-19T14:52:17.043 に答える
0

私にとってうまくいったのはindicator.onPageSelected(0)、呼び出し後に設定することsetCurrentItem(0)です。コードを見ると、mSnapPageそれが行うことは をその位置に設定することですが、それ以外の場合は行われません。

@Override
public void onPageSelected(int position) {
    if (mSnap || mScrollState == ViewPager.SCROLL_STATE_IDLE) {
        mCurrentPage = position;
        mSnapPage = position;
        invalidate();
    }

    if (mListener != null) {
        mListener.onPageSelected(position);
    }

しかし、これはひどくハックです。彼らがそれを修正することを願っています:/

于 2015-09-15T14:51:41.880 に答える
0

CirclePageIndicator.java にバグがあることがわかりました。最初にFragmentを起動したときに、選択したページ サークルを塗りつぶしたくありませんでしたが、 ViewPagerに触れるだけですべて問題ありません...バグがありました:

public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    mCurrentPage = position;
    mPageOffset = positionOffset; // error here
    invalidate();

    if (mListener != null) {
        mListener.onPageScrolled(position, positionOffset, positionOffsetPixels);
    }
}

onCreateでビューを初期化したときにpositionOffsetNanを返したため、 onDraw()は選択した円の塗りつぶしを描画しませんでした

解決策は、次のように、割り当てる前にpositionOffset値を確認することです。

public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    mCurrentPage = position;
    mPageOffset = (positionOffset > 0) ? positionOffset : 0;
    invalidate();

    if (mListener != null) {
        mListener.onPageScrolled(position, positionOffset, positionOffsetPixels);
    }
}
于 2015-03-16T12:38:12.747 に答える