2016-09-02 5 views
0

Ich möchte startActivity(LoginActivity) wenn nach dem 3. Fragment.Wie bewegt man sich von Fragment zu Aktivität, wenn das letzte Fragment des Viewpager verschoben wird?

In Position 3. Fragment, gleite ich von rechts nach links, um die Aktivität zu starten.

fand ich eine Frage, aber:

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

} 

In diesem Fall, wenn Bewegung 2. Fragment zu Fragment 3. mit Rutsche, 3. Fragment (letzte Fragment) ein wenig und Veränderung Aktivität erschienen war.

Ich möchte die Aktivität ändern, wenn ich das letzte Fragment verschiebe (nicht vom 2. Fragment zum 3. Fragment, nur das 3. Fragment gleiten).

Wie kann ich Fragment auf spezifische Aktivität Warp, wenn letzte Fragment gleiten?

Bitte helfen Sie mir.

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


} 

Antwort

0

Sie müssen die Implementierung der Methoden von ViewPager.OnPageChangeListener ändern. Hier ist, was ich verwendet habe und es geschafft habe, dieses Problem zu lösen.

Ich habe hier Ihren Übergang zu (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; 
      } 
     } 
    }); 
Verwandte Themen