Как я могу начать новое действие в ScreenSlidePagerAdapter? - PullRequest
1 голос
/ 27 июня 2019

У меня есть FragmentActivity, где у меня есть ScreenSlidePagerAdapter, который показывает много фрагментов с помощью метода getItem () для пролистывания между фрагментами.Я хочу, чтобы после того, как пользователь завершил перетаскивание фрагментов (например, от 0 до 15), откроется новое действие, показывающее результаты того, что пользователь сделал, перемещаясь по фрагментам (это курс).

ЧтоМне нужно это намерение открыть новое действие после фрагментов.

Это мой код:

    package activities;

import android.content.Intent;
import android.net.Uri;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;

import com.flixarts.ar.*.R;
import com.flixarts.ar.*.fragment1;
import com.flixarts.ar.*.fragment10;
import com.flixarts.ar.*.fragment11;
import com.flixarts.ar.*.fragment12;
import com.flixarts.ar.*.fragment13;
import com.flixarts.ar.*.fragment14;
import com.flixarts.ar.*.fragment15;
import com.flixarts.ar.*.fragment2;
import com.flixarts.ar.*.fragment3;
import com.flixarts.ar.*.fragment4;
import com.flixarts.ar.*.fragment5;
import com.flixarts.ar.*.fragment6;
import com.flixarts.ar.*.fragment7;
import com.flixarts.ar.*.fragment8;
import com.flixarts.ar.*.fragment9;
import com.flixarts.ar.*.menuscreen;

public class saludos extends FragmentActivity implements      fragment1.OnFragmentInteractionListener, fragment2.OnFragmentInteractionListener, fragment3.OnFragmentInteractionListener, fragment4.OnFragmentInteractionListener {

private TextView espacioFrases;
private TextView espacioFrasesTraducidas;
private Button next;
private Button buttonHome;
private ViewPager mPager;
private PagerAdapter pagerAdapter;
private static final int NUM_PAGES = 15;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_saludos);
 mPager = (ViewPager) findViewById(R.id.pager);
    pagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
    mPager.setAdapter(pagerAdapter);



}
@Override
public void onBackPressed(){
    if (mPager.getCurrentItem() == 0) {
        super.onBackPressed();
    }
    else {
        mPager.setCurrentItem(mPager.getCurrentItem() -1);
    }
}

@Override
public void onFragmentInteraction(Uri uri) {

}

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    public ScreenSlidePagerAdapter(FragmentManager fm){
        super(fm);
    }
    @Override
    public Fragment getItem(int position){
        switch (position){
            case 0: return new fragment1();
            case 1: return new fragment2();
            case 2: return new fragment3();
            case 3: return new fragment4();
            case 4: return new fragment5();
            case 5: return new fragment6();
            case 6: return new fragment7();
            case 7: return new fragment8();
            case 8: return new fragment9();
            case 9: return new fragment10();
            case 10: return new fragment11();
            case 11: return new fragment12();
            case 12: return new fragment13();
            case 13: return new fragment14();
            case 14: return new fragment15();
            //Here I want to start new activity
            default: return new fragment1();
        }
    }

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

Я пытался создать намерение с помощью getActivity (), но этот метод не былзагружен в Android Studio (возможно, это старый).

1 Ответ

2 голосов
/ 27 июня 2019

Вы должны написать код стартовой активности в последнем отображающем фрагменте адаптера.(Если вы используете экземпляры одного и того же фрагмента, то вы должны передать позицию от адаптера к фрагменту при его создании.

Intent intent = new Intent(getContext(), ThirdActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
...