0

I'm attempting to implement a viewPager in my source code and I set a breakpoint at the line:

if (position > oldPos) {

yet for some reason when swiping the viewPager left and right I never seem to reach the breakpoint in the debugger. I've looked over my source quite a few times and I cannot seem to pinpoint exactly what is causing this.

Any suggestions are greatly appreciated.

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);
        final ActionBar actionBar = getActionBar();
        final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

        viewPager.setAdapter(adapter);

        actionBar.setCustomView(R.layout.actionbar_custom_view_home);
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setDisplayShowCustomEnabled(true);
        drawerListViewItems = getResources().getStringArray(R.array.items);
        drawerListView = (ListView) findViewById(R.id.left_drawer);
        drawerListView.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_listview_item, drawerListViewItems));

        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        actionBarDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
        drawerLayout, /* DrawerLayout object */
        R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
        R.string.drawer_open, /* "open drawer" description */
        R.string.drawer_close /* "close drawer" description */
        );
        drawerLayout.setDrawerListener(actionBarDrawerToggle);

        getActionBar().setDisplayHomeAsUpEnabled(true);

        drawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
                GravityCompat.START);

        listView = (VideosListView) findViewById(R.id.videosListView);
        listView.setOnVideoClickListener(this);
        new GetYouTubeUserVideosTask(responseHandler, playlist).execute();
        setOnPageChangeListener(mPageChangeListener);
        final ViewPager.SimpleOnPageChangeListener mPageChangeListener = new ViewPager.SimpleOnPageChangeListener() {

            @Override
            public void onPageSelected(final int position) {
                onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position);
                mCurrentTabPosition = position;
                int oldPos = viewPager.getCurrentItem();
                if (position > oldPos) {
                    // Moving to the right
                    String playlist = "TheMozARTGROUP‎";
                    new GetYouTubeUserVideosTask(responseHandler, playlist)
                            .execute();

                    View vg = findViewById(R.layout.home);
                    vg.invalidate();

                } else if (position < oldPos) {
                    // Moving to the Left

                    String playlist = "TheMozARTGROUP‎";
                    new GetYouTubeUserVideosTask(responseHandler, playlist)
                            .execute();

                    View vg = findViewById(R.layout.home);
                    vg.invalidate();

                }
            }

            private void onTabChanged(PagerAdapter adapter,
                    int mCurrentTabPosition, int position) {
                // TODO Auto-generated method stub

            }
        };

    }

    private void setOnPageChangeListener(
            OnPageChangeListener mPageChangeListener2) {
        // TODO Auto-generated method stub

    }

    Handler responseHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            populateListWithVideos(msg);
        };
    };

    private void populateListWithVideos(Message msg) {
        Library lib = (Library) msg.getData().get(
                GetYouTubeUserVideosTask.LIBRARY);
        listView.setVideos(lib.getVideos());
    }

    @Override
    protected void onStop() {
        responseHandler = null;
        super.onStop();
    }

    @Override
    public void onVideoClicked(Video video) {
        Intent intent = new Intent(this, Player.class);
        intent.putExtra("id", video.getId());
        intent.putExtra("title", video.getTitle());
        intent.putExtra("uploader", video.getUploader());
        intent.putExtra("viewCount", video.getviewCount());
        startActivity(intent);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        actionBarDrawerToggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    private class ImagePagerAdapter extends PagerAdapter {
        public ImagePagerAdapter(Activity act, int[] mImages,
                String[] stringArra) {
            imageArray = mImages;
            activity = act;
            stringArray = stringArra;
        }

        // this is your constructor
        public ImagePagerAdapter() {
            super();

        }

        private int[] mImages = new int[] { R.drawable.selstation_up_btn,
                R.drawable.classical_up_btn, R.drawable.country_up_btn,
                R.drawable.dance_up_btn, R.drawable.hiphop_up_btn,
                R.drawable.island_up_btn, R.drawable.latin_up_btn,
                R.drawable.pop_up_btn, R.drawable.samba_up_btn };

        private String[] stringArray = new String[] { "vevo",
                "TheMozARTGROUP‎", "TimMcGrawVEVO‎", "TiestoVEVO‎",
                "EminemVEVO‎" };

        @Override
        public int getCount() {
            return mImages.length;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == ((ImageView) object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Context context = Home.this;
            ImageView imageView = new ImageView(context);
            imageView.setScaleType(ScaleType.FIT_XY);
            imageView.setImageResource(mImages[position]);
            ((ViewPager) container).addView(imageView, 0);
            return imageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager) container).removeView((ImageView) object);
        }

        protected void onTabChanged(final PagerAdapter adapter,
                final int oldPosition, final int newPosition) {
            // Calc if swipe was left to right, or right to left
            if (oldPosition > newPosition) {
                // left to right
            } else {
                // right to left


            }
            final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

        }
    }
}
user3063132
  • 133
  • 2
  • 14

2 Answers2

0

Where exactly is the breakpoint located? If it's on the method delcaration it probably won't be triggered depending on your IDE. Try placing it inside the method itself, so in your case at the line:

**breakpoint** if (position > oldPos) {
Karl
  • 3,394
  • 2
  • 22
  • 31
  • I just set it there as you suggested: the breakpoint still cannot be reached – user3063132 Dec 11 '13 at 21:33
  • No IDE I've ever used behaved that way. It may prevent you from setting a breakpoint somewhere for some reason, but if it can be set it can be reached, or a warning could be given. – ChiefTwoPencils Dec 11 '13 at 21:35
  • It is my first time using the ViewPager and I'm not sure if I implemented it correctly (this is more than likely the cause of the issue - I just cant seem to spot what I did wrong) – user3063132 Dec 11 '13 at 21:35
0

You are never calling that code. That line is inside onTabChanged, which is only called by mPageChangeListener, which is never used. So of course, you will never reach that breakpoint.

GLee
  • 5,003
  • 5
  • 35
  • 39
  • Ok - so I should move the block of code from onTabChanged to onPageSelected? – user3063132 Dec 11 '13 at 21:44
  • Move this block, `viewPager.setOnPageChangeListener(new OnPageChangeListener() { etc }` to onCreate or something that is guaranteed to be called. – GLee Dec 11 '13 at 21:48
  • I just added updated source above - does that look correct to you? : ) – user3063132 Dec 11 '13 at 21:57
  • FYI: I'm getting a warning that mPageChangeListener is never used... and when I set a breakpoint at if (position > oldPos) { (using the updated code shown above under EDIT) the breakpoint still cannot be reached – user3063132 Dec 11 '13 at 22:03
  • Did you try running it? – GLee Dec 11 '13 at 22:05
  • See anything else that might be preventing me from reaching the breakpoint I have set at if (position > oldPos) { – user3063132 Dec 11 '13 at 22:14
  • You never call viewpager.setOnPageChangeListener(mPageChangeListener). Also, it looks like you are reassigning a class variable with the line, `final ViewPager.SimpleOnPageChangeListener mPageChangeListener =` – GLee Dec 11 '13 at 23:00
  • let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/43050/discussion-between-user3063132-and-glee) – user3063132 Dec 12 '13 at 14:29