簡體   English   中英

當viewpager的最后一個片段滑動時,如何從片段變為活動?

[英]How move from fragment to activity when viewpager's last fragment slide?

在第三個片段之后,我想要startActivity(LoginActivity)

在第3個片段中,我從右向左滑動以開始活動。

我發現了一個問題,但:

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

    if(position == tutorialViewPager.getAdapter().getCount() - 1){

        Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
    }

}

在這種情況下,當用幻燈片將第二個片段移動到第三個片段時,第三個片段(最后一個片段)會出現一點並改變活動性。

當我滑動最后一個片段(不是從第二個片段到第三個片段,只是滑動第三個片段)時,我想更改“活動”。

滑動最后一個片段時,如何將片段變形為特定的活動?

請幫我。

public class TutorialActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {

    int MAX_PAGE = 3;
    Fragment cur_fragment = new Fragment();

    ViewPager tutorialViewPager;

    private int selectedPageIndex = -1;
    private boolean exitWhenScrollNextPage = false;


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

        tutorialViewPager = (ViewPager) findViewById(R.id.tutorialViewPager);
        tutorialViewPager.setAdapter(new adapter(getSupportFragmentManager()));

        tutorialViewPager.addOnPageChangeListener(this);

    }

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

        if(position == tutorialViewPager.getAdapter().getCount() - 1){

            Intent intent = new Intent(this, LoginActivity.class);
            startActivity(intent);
        }

    }

    @Override
    public void onPageSelected(int position) {

    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }

    private class adapter extends FragmentPagerAdapter{

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

        @Override
        public Fragment getItem(int position) {

            if(position<0 || MAX_PAGE <= position){
                return null;
            }

            switch (position){

                case 0:
                    cur_fragment = new TutorialFragmentA();
                    break;

                case 1:
                    cur_fragment = new TutorialFragmentB();
                    break;

                case 2:
                    cur_fragment = new TutorialFragmentC();
                    break;


            }
            return cur_fragment;
        }

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


}

您必須修改ViewPager.OnPageChangeListener方法的實現。 這是我用來解決此問題的方法。

我在這里將您轉換為(LoginActivity)。

mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        boolean onLastPageChanged = false;
        @Override
        public void onPageSelected(int position) {
        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            int lastFrag = mQuestionCollectionPagerAdapter.getCount() -1;

            if (onLastPageChanged && position == lastFrag) {
                //next
                Log.e(TAG, "Transition Happened");
            }
        }

        @Override
        public void onPageScrollStateChanged (int state) {
            int lastFrag = mQuestionCollectionPagerAdapter.getCount() -1;

            int currentFragment = mViewPager.getCurrentItem();
            if (currentFragment == lastFrag /*&& lastPos==lastIdx*/ && state == 1) {
                onLastPageChanged = true;
                Log.e(TAG, "page scroll state >>>>>>");
                Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
                finish();
            } else {
                onLastPageChanged = false;
            }
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM