[英]How to return back to a fragment in viewpager from an Activity's fragment
[英]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.