2016-09-02 14 views
0

3番目のフラグメントの後にstartActivity(LoginActivity)が必要です。viewpagerの最後のフラグメントがスライドするとき、どのようにフラグメントからアクティビティに移動しますか?

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); 
    } 

} 

最後のフラグメントをスライドするときにアクティビティを変更したい(2番目のフラグメントから3番目のフラグメントではなく、3番目のフラグメントをスライドさせます)。

最後のフラグメントをスライドすると、特定のアクティビティにフラグメントをワープする方法はありますか?

私を助けてください。

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; 
     } 
    } 


} 

答えて

0

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; 
      } 
     } 
    }); 
関連する問題