3

I have a frustrating issue in my application:

  • I have a Fragment which contains one ListView.
  • Every row of ListView loads a ViewPager and ViewPagerCustomIndicator objects from XML file.
  • For each ViewPager loaded I set an Id by viewHolder.viewPager.setId(Utils.generateViewId());; I find this tip here.
  • The ListView data is load on onResume Fragment event.

At first time, everything works fine. At second load, the App crash with this log:

08-26 15:39:05.441: E/AndroidRuntime(31633): Process: com.playyoo.android.sportyes, PID: 31633 08-26 15:39:05.441: E/AndroidRuntime(31633): > android.content.res.Resources$NotFoundException: Unable to find resource ID #0x1 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.content.res.Resources.getResourceName(Resources.java:1773) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:934) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1103) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1901) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1518) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:962) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:764) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1533) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.FragmentManagerImpl$2.run(FragmentManager.java:489) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:450) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.os.Handler.handleCallback(Handler.java:733) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.os.Handler.dispatchMessage(Handler.java:95) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.os.Looper.loop(Looper.java:136) 08-26 15:39:05.441: E/AndroidRuntime(31633): at android.app.ActivityThread.main(ActivityThread.java:5001) 08-26 15:39:05.441: E/AndroidRuntime(31633): at java.lang.reflect.Method.invoke(Native Method) 08-26 15:39:05.441: E/AndroidRuntime(31633): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 08-26 15:39:05.441: E/AndroidRuntime(31633): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)

Ok the error is obvious, but I can't find the solution to fix it. Without ViewPager the application works fine.

This is my Adapter (in this example I don't use Android recycling-cell mechanism):

@Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        XmlEvento e = (XmlEvento) getItem(position);

        final ViewHolder viewHolder = new ViewHolder();

        View view = _mInflater.inflate(_graphicResource, null);
        viewHolder.viewPager = (ViewPager) view
                .findViewById(R.id.live_view_pager);
        viewHolder.viewPagerIndicator = (ViewPagerIndicator) view
                .findViewById(R.id.live_view_pager_indicator);
        // viewHolder.viewPager.setId(position + 1);
        viewHolder.viewPager.setId(Utils.generateViewId());

        view.setTag(viewHolder);

        final List<Fragment> fragments = new Vector<Fragment>();

        for (int i = 0; i < scommesse.size(); i++) {

            XmlScommesse scommmessa = scommesse.get(i);

            Fragment fr = Live_Level_1_BetRow_Fragment.newInstance(e,
                    scommmessa);
            fragments.add(fr);
        }

            final String eId = getEventId(e);
            final Live_Bet_Level_1_Adapter mPagerAdapter = new Live_Bet_Level_1_Adapter(
                    _fragmentManager, fragments, _iBet);

            viewHolder.viewPager.setAdapter(mPagerAdapter);
            viewHolder.viewPager.setCurrentItem(_viewPagerStoredPosition
                    .get(eId));

                // Bind the circle indicator to the adapter.
                viewHolder.viewPagerIndicator
                        .setViewPager(viewHolder.viewPager);
                viewHolder.viewPagerIndicator
                        .setOnPageChangeListener(new OnPageChangeListener() {

                            @Override
                            public void onPageSelected(int p) {

                                Live_Level_1_BetRow_Fragment fr = (Live_Level_1_BetRow_Fragment) fragments
                                        .get(p);
                                fr.setAdapter(mPagerAdapter);
                            }

                            @Override
                            public void onPageScrollStateChanged(int position) {
                                // TODO Auto-generated method stub
                            }

                            @Override
                            public void onPageScrolled(int position,
                                    float positionOffset,
                                    int positionOffsetPixels) {
                                // TODO Auto-generated method stub
                            }
                        });

The Live_Level_1_BetRow_Fragment.newInstance(e, bet); si a simple Fragment, which contains:

view = inflater.inflate(R.layout.MY_ROW_LAYOUT, container, false);

Thank you for suggestions.

Community
  • 1
  • 1

0 Answers0