0

Ich verwende Tabbed Activity von Android Studio.Warum setCurrentItem() von viewPager funktioniert für die nächste Seite und nicht für die vorherige Seite?

Ich bin zwischen den Seiten swiping bewegt, aber ich habe 2 Ansichten hinzugefügt, um nächste und vorherige durch onclick-Methode zu bewegen, aber es funktioniert nicht, um nur zurückzugehen, um als nächstes zu gehen.

 nextAbitudini.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         //it works 
         mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER)); 
        } 
       }); 

    backAbitudini.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         //it doesn't work 
         mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER)-1); 
        } 
       }); 

Ich benutze FragmentPagerAdapter. Es funktioniert zurück wischen.

Ich legte onClick Methoden in onCreateview.

+0

Sie die ARG_SECTION_NUMBER auf der onPageSelected des ViewPager Ändern Sie? – MohanadMohie

+0

ja, ich habe versucht, eine feste Nummer zu setzen –

Antwort

1

Verweisen Sie auf die Tabbed Activity, sehen Sie sich die Abschnittsnummer an, wenn das Fragment initialisiert wird. (Abschnittsnummer = Position + 1).

@Override 
    public Fragment getItem(int position) { 
     // getItem is called to instantiate the fragment for the given page. 
     // Return a PlaceholderFragment (defined as a static inner class below). 
     return PlaceholderFragment.newInstance(position + 1); 
    } 

Daher bezieht sich ARG_SECTION_NUMBER-1 auf die Position des aktuellen Fragments, ARG_SECTION_NUMBER-2 zum vorherigen und ARG_SECTION_NUMBER zum nächsten.

Folglich sollte der Code wie folgt sein:

nextAbitudini.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        //it works 
        mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER)); 
       } 
      }); 

backAbitudini.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        //it doesn't work 
        mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER)-2); 
       } 
      }); 
+1

Sie sollten auch beachten, dass Sie die nächsten und hinteren Schaltflächen in der 'Aktivität', die den' ViewPager' enthält, nicht innerhalb jedes 'Fragments 'platzieren sollten. – MohanadMohie

+0

Sie haben Recht und ich werde mich in die Aktivität bewegen! –

Verwandte Themen