How to refresh a fragment in a viewpager?

15,630

In each of your KFZFragment, LogFragment, and TrackFragment, you should be able to override onResume in your fragment class and put your necessary refresh/reload code there.

Share:
15,630
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin almost 2 years

    I know there are already some questions to this problem. But I am really new in Android and ecspecially to Fragments and Viewpager. Pls have passion with me. I didn't found a answer which fits to my code.

    I dont know how to refresh a fragment or reload it when it's "active" again.

    TabsPagerAdapter.java:

    public class TabsPagerAdapter extends FragmentPagerAdapter{
    
    
        public TabsPagerAdapter(FragmentManager fm){
            super(fm);
        }
    
        @Override
        public Fragment getItem(int index) {
    
            switch (index) {
            case 0:
    
                return new KFZFragment();
            case 1:
    
                return new LogFragment();
            case 2:
    
                return new TrackFragment();
            }
    
            return null;
        }
    
        @Override
        public int getCount() {
            // get item count - equal to number of tabs
            return 3;
        }
    
    }
    

    I have this 3 Fragments (KFZFragment,LogFragment,TrackFragment) and on the TrackFragment I calculate some data and this data should be display in a ListView in LogFragment. But when I change to LogFragment it's not the latest data. So it doesnt refresh.

    Now how should I modify my code to refresh the fragments when it's "active"?

    MainActivityFragment.java:

    public class MainActivityFragment extends FragmentActivity implements ActionBar.TabListener{
    
        private ViewPager viewPager;
        private TabsPagerAdapter mAdapter;
        private ActionBar actionBar;
        List<Fragment> fragments;
    
        private String[] tabs = { "KFZ", "Fahrten Log", "Kosten Track" };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main_fragment);
    
            // Initilization
            viewPager = (ViewPager) findViewById(R.id.pager);
            actionBar = getActionBar();
            mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
    
           fragments = new Vector<Fragment>();
            fragments.add(Fragment.instantiate(this, KFZFragment.class.getName(),savedInstanceState));
            fragments.add(Fragment.instantiate(this, LogFragment.class.getName(),savedInstanceState));
    
            viewPager.setAdapter(mAdapter);
            actionBar.setHomeButtonEnabled(false);
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        
    
            // Adding Tabs
            for (String tab_name : tabs) {
                actionBar.addTab(actionBar.newTab().setText(tab_name)
                        .setTabListener(this));
            }
    
            viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    
                @Override
                public void onPageSelected(int position) {
                    // on changing the page
                    // make respected tab selected
                    actionBar.setSelectedNavigationItem(position);
    
                }
    
                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                }
    
                @Override
                public void onPageScrollStateChanged(int arg0) {
                }
            });
        }   
        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            viewPager.setCurrentItem(tab.getPosition());
    
        }
    
        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
    
    
            }
            return super.onKeyDown(keyCode, event);
        }
    
    }
    

    Pls help me out.

  • cYrixmorten
    cYrixmorten over 10 years
    Could be dangerous if the fragment is currently not 'alive' e.g. during orientation change or the like.