Note that there are some explanatory texts on larger screens.

plurals
  1. POChange icon when changing fragment page by viewpager
    primarykey
    data
    text
    <p>I'm using a viewpager with 5 fragments to enable horizontal scrolling. I have put an icon that corresponds with each page so the user can know on which page he is. I also programmed that if an icon is pressed the corresponding icon to the page highlights. But the icons highlight if it is pressed and the user is on that page. But if I swipe to another page, how am I able to change the icon?</p> <p><strong>MainActivity</strong></p> <pre><code>import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.SimpleOnPageChangeListener; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /** Getting a reference to the ViewPager defined the layout file */ final ViewPager pager = (ViewPager) findViewById(R.id.pager); PageListener pagelistener = new PageListener(); pager.setOnPageChangeListener(pagelistener); /** Getting fragment manager */ FragmentManager fm = getSupportFragmentManager(); /** Instantiating FragmentPagerAdapter */ MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm); /** Setting the pagerAdapter to the pager object */ pager.setAdapter(pagerAdapter); pager.setPageTransformer(true, new ZoomOutPageTransformer()); final ImageButton vpOne = (ImageButton) findViewById(R.id.vpOne); final ImageButton vpTwo = (ImageButton) findViewById(R.id.vpTwo); final ImageButton vpThree = (ImageButton) findViewById(R.id.vpThree); final ImageButton vpFour = (ImageButton) findViewById(R.id.vpFour); final ImageButton vpFive = (ImageButton) findViewById(R.id.vpFive); final ImageButton vpSix = (ImageButton) findViewById(R.id.vpSix); OnClickListener One = new OnClickListener() { @Override public void onClick(View v) { pager.setCurrentItem(0, true); vpOne.setImageResource(R.drawable.vp_One); vpTwo.setImageResource(R.drawable.vp_Two_bw); vpThree.setImageResource(R.drawable.vp_Three_bw); vpFour.setImageResource(R.drawable.vp_Four_bw); vpFive.setImageResource(R.drawable.vp_Five_bw); vpSix.setImageResource(R.drawable.vp_Six_bw); } }; OnClickListener Two = new OnClickListener() { @Override public void onClick(View v) { pager.setCurrentItem(1, true); vpOne.setImageResource(R.drawable.vp_One_bw); vpTwo.setImageResource(R.drawable.vp_Two); vpThree.setImageResource(R.drawable.vp_Three_bw); vpFour.setImageResource(R.drawable.vp_Four_bw); vpFive.setImageResource(R.drawable.vp_Five_bw); vpSix.setImageResource(R.drawable.vp_Six_bw); } }; OnClickListener Three = new OnClickListener() { @Override public void onClick(View v) { pager.setCurrentItem(2, true); vpOne.setImageResource(R.drawable.vp_One_bw); vpTwo.setImageResource(R.drawable.vp_Two_bw); vpThree.setImageResource(R.drawable.vp_Three); vpFour.setImageResource(R.drawable.vp_Four_bw); vpFive.setImageResource(R.drawable.vp_Five_bw); vpSix.setImageResource(R.drawable.vp_Six_bw); } }; OnClickListener Four = new OnClickListener() { @Override public void onClick(View v) { pager.setCurrentItem(3, true); vpOne.setImageResource(R.drawable.vp_One_bw); vpTwo.setImageResource(R.drawable.vp_Two_bw); vpThree.setImageResource(R.drawable.vp_Three_bw); vpFour.setImageResource(R.drawable.vp_Four); vpFive.setImageResource(R.drawable.vp_Five_bw); vpSix.setImageResource(R.drawable.vp_Six_bw); } }; OnClickListener Five = new OnClickListener() { @Override public void onClick(View v) { pager.setCurrentItem(4, true); vpOne.setImageResource(R.drawable.vp_One_bw); vpTwo.setImageResource(R.drawable.vp_Two_bw); vpThree.setImageResource(R.drawable.vp_Three_bw); vpFour.setImageResource(R.drawable.vp_Four_bw); vpFive.setImageResource(R.drawable.vp_Five); vpSix.setImageResource(R.drawable.vp_Six_bw); } }; OnClickListener Six = new OnClickListener() { @Override public void onClick(View v) { pager.setCurrentItem(5, true); vpOne.setImageResource(R.drawable.vp_One_bw); vpTwo.setImageResource(R.drawable.vp_Two_bw); vpThree.setImageResource(R.drawable.vp_Three_bw); vpFour.setImageResource(R.drawable.vp_Four_bw); vpFive.setImageResource(R.drawable.vp_Five_bw); vpSix.setImageResource(R.drawable.vp_Six); } }; vpOne.setOnClickListener(One); vpTwo.setOnClickListener(Two); vpThree.setOnClickListener(Three); vpFour.setOnClickListener(Four); vpFive.setOnClickListener(Five); vpSix.setOnClickListener(Six); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } class PageListener extends SimpleOnPageChangeListener { final ImageButton vpOne = (ImageButton) findViewById(R.id.vpOne); final ImageButton vpTwo = (ImageButton) findViewById(R.id.vpTwo); final ImageButton vpThree = (ImageButton) findViewById(R.id.vpThree); final ImageButton vpFour = (ImageButton) findViewById(R.id.vpFour); final ImageButton vpFive = (ImageButton) findViewById(R.id.vpFive); final ImageButton vpSix = (ImageButton) findViewById(R.id.vpSix); public void onPageSelected(int position) { int noOfPages = 5; int currentPage = position; if (currentPage % noOfPages == 0) { vpOne.setImageResource(R.drawable.vp_One); vpTwo.setImageResource(R.drawable.vp_Two_bw); vpThree.setImageResource(R.drawable.vp_Three_bw); vpFour.setImageResource(R.drawable.vp_Four_bw); vpFive.setImageResource(R.drawable.vp_Five_bw); vpSix.setImageResource(R.drawable.vp_Six_bw); } else if (currentPage % noOfPages == 1) { // add like the above } else if (currentPage % noOfPages == 2) { // add like the above } else if (currentPage % noOfPages == 3) { // add like the above } else if (currentPage % noOfPages == 4) { // add like the above } } } </code></pre> <p><strong>MyFragmentPagerAdapter</strong></p> <pre><code>import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; public class MyFragmentPagerAdapter extends FragmentPagerAdapter{ final int PAGE_COUNT = 6; /** Constructor of the class */ public MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } /** This method will be invoked when a page is requested to create */ @Override public Fragment getItem(int arg0) { switch(arg0){ case 0: return new OneFragment(); case 1: return new TwoFragment(); case 2: return new ThreeFragment(); case 3: return new FourFragment(); case 4: return new FiveFragment(); case 5: return new SixFragment(); default: return null; } } /** Returns the number of pages */ @Override public int getCount() { return PAGE_COUNT; } } </code></pre> <p>I tried the following in each fragment, but didn't work:</p> <p><strong>A fragment</strong></p> <pre><code>import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageButton; public class OneFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.one, container, false); ImageButton vpOne = (ImageButton) v.findViewById(R.id.vpOne); ImageButton vpTwo = (ImageButton) v.findViewById(R.id.vpTwo); ImageButton vpThree = (ImageButton) v.findViewById(R.id.vpThree); ImageButton vpFour = (ImageButton) v.findViewById(R.id.vpFour); ImageButton vpFive = (ImageButton) v.findViewById(R.id.vpFive); ImageButton vpSix = (ImageButton) v.findViewById(R.id.vpSix); vpOne.setImageResource(R.drawable.vp_One); vpTwo.setImageResource(R.drawable.vp_Two_bw); vpThree.setImageResource(R.drawable.vp_Three_bw); vpFour.setImageResource(R.drawable.vp_Four_bw); vpFive.setImageResource(R.drawable.vp_Five_bw); vpSix.setImageResource(R.drawable.vp_Six_bw); return v; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload