How to end a fragment by changing to another fragment

0

I have a small application with a BottomNavigationView , I have added three buttons, with the first button shows a fragment _home, in this fragment there is a viewpager which aims to show a slide of images , a timer TimerTask has been set for the interval between images.

The problem I have is that when I go to another fragment and I return the transitions are altered in the time they are shown, it is as if while I am in the other view, they will be waiting and once I return to this fragment the times begin to run between the images visually without order.

I think that if moving to another view or fragment it would be good to finish this fragment.

I am using fragmentTransaction.addToBackStack(null); to enable onBackPressed to return between fragments, and I read about using fragmentManager.popBackStack() ; but it has not worked for me If I have made myself understood I appreciate your help, then I share code:

MainActivity

public class MainActivity extends AppCompatActivity {

private BottomNavigationView bottomNavigationView;

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

    final Fragment home = new Fragment_home();
    final Fragment dash =  new Fragment_Dashboard();
    final Fragment notif = new Fragment_notifications();

    if(savedInstanceState == null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_main, new Fragment_home()).commit();
    }

    bottomNavigationView = (BottomNavigationView) findViewById(R.id.navigation);
    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

           FragmentManager fragmentManager = getSupportFragmentManager();
           FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
           fragmentTransaction.addToBackStack(null);

            if (item.getItemId() == R.id.home) {
                fragmentTransaction.replace(R.id.content_main, home).commit();
            } else if (item.getItemId() == R.id.dashboard) {
                fragmentTransaction.replace(R.id.content_main, dash).commit();
            } else if (item.getItemId() == R.id.notifications) {
                fragmentTransaction.replace(R.id.content_main, notif).commit();
            }
            return true;
        }
    });
}
}

Fragment_home

public class Fragment_home extends Fragment {

//ViewPager
ViewPager viewPager;
CustomSwipeAadapter adapter;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v =  inflater.inflate(R.layout.fragment_home, container, false);

    //ViewPager
    viewPager = (ViewPager)v.findViewById(R.id.view_pager);
    adapter = new CustomSwipeAadapter(getContext());
    viewPager.setAdapter(adapter);

    Timer timer = new Timer();
    timer.schedule(new MyTimerTask(), 3000, 4000);

    return v;
}

public class MyTimerTask extends TimerTask {

    @Override
    public void run() {

        if(getActivity() != null) {

            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    if(viewPager.getCurrentItem()==0){
                        viewPager.setCurrentItem(1);
                        //viewPager.setCurrentItem(1, true);
                    }else if(viewPager.getCurrentItem()==1){
                        viewPager.setCurrentItem(2);
                        //viewPager.setCurrentItem(2, true);
                    }else if(viewPager.getCurrentItem()==2){
                        viewPager.setCurrentItem(0);
                        //viewPager.setCurrentItem(0, true);
                    }
                }
            });

        }

    }
}

}

Full project on GitHub: PROJECT

    
asked by Ivan Alfredo 21.11.2017 в 20:16
source

0 answers