Пейджер просмотра потерял свое содержимое при переключении на вкладки в хосте вкладки фрагмента

Я столкнулся с очень странной проблемой, я нашел подобную проблему в сети, но ни одно из решений не помогло мне избавиться от этого.

Проблема ::

У меня есть один фрагмент с 3 вкладками (вкладки, созданные с использованием узла вкладок фрагментов). Теперь на каждой вкладке есть разные фрагменты.

На первой вкладке я установил один фрагмент, где я использовал просмотр пейджера и индикатор круговой страницы для отображения изображений с точками (кругом).

Теперь, когда я прокручиваю изображение с 1-го на 2-е, затем на 3-е и так далее, все работает нормально. Но после перехода на изображение 2, когда я нажимаю на вкладку 2 и снова возвращаюсь на вкладку 1, мои изображения теряются.

Буду признателен за ваше руководство или любую помощь/ссылки..
Большое спасибо заранее.

Для вашего понимания здесь я публикую код ниже ::

Фрагмент с TabHost ::

public class FragmentwithTabHost extends Fragment{

    private View rootView;
     private FragmentTabHost mTabHost;
     private Context mContext;
    public FragmentwithTabHost() {
    }

    public FragmentwithTabHost(Context ctx) {
        mContext=getActivity();
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.mycardswithtabs, container,
                false);

        mTabHost = (FragmentTabHost) rootView.findViewById(android.R.id.tabhost);

        mTabHost.setup(getActivity(), getChildFragmentManager(), android.R.id.tabcontent);
        mTabHost.setBackground(getActivity().getResources().getDrawable(R.drawable.normal));
        mTabHost.addTab(
                mTabHost.newTabSpec("tab1").setIndicator("tab1", null),
                Fragment1.class, null);
        mTabHost.addTab(
                mTabHost.newTabSpec("tab2").setIndicator("tab2", null),
                Fragment2.class, null);
        mTabHost.addTab(
                mTabHost.newTabSpec("tab3").setIndicator("tab3", null),
                Fragment3.class, null);
        return rootView;
    }
}

Фрагмент1 ::

public class Fragment1 extends Fragment{

    //  private Context mContext;
    private View rootView;

    SlidesFragmentAdapter mAdapter;
    ViewPager mPager;
    PageIndicator mIndicator;
    LinearLayout llSponseredImage,llSponserdByText;
    ImageView imgsponser1,imgsponser2,imgsponser3,imgsponser4;
    public Fragment1() {
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.my_card, container,false);

        mAdapter = new SlidesFragmentAdapter(getActivity()
                .getSupportFragmentManager());

        llSponseredImage=(LinearLayout)rootView.findViewById(R.id.mycardbottomViewSponseredImage);
        llSponserdByText=(LinearLayout)rootView.findViewById(R.id.mycardbottomsponsredby);

        imgsponser1=(ImageView)rootView.findViewById(R.id.imgsponser1);
        imgsponser2=(ImageView)rootView.findViewById(R.id.imgsponser2);
        imgsponser3=(ImageView)rootView.findViewById(R.id.imgsponser3);
        imgsponser4=(ImageView)rootView.findViewById(R.id.imgsponser4);

        mPager = (ViewPager) rootView.findViewById(R.id.pager);
        mPager.setOffscreenPageLimit(4);
        mPager.setClipToPadding(false);
        mPager.setPageMargin(12);
        mPager.setAdapter(mAdapter);

        mIndicator = (CirclePageIndicator) rootView.findViewById(R.id.indicator);
        mIndicator.setViewPager(mPager);
        ((CirclePageIndicator) mIndicator).setSnap(true);

        mPager.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("3242353652523");
                MyCardsWithOffersFragment myCardsWithOffersFragment=new MyCardsWithOffersFragment();
            }
        });
        mIndicator
        .setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                /*Toast.makeText(getActivity(),
                        "Changed to page " + position,
                        Toast.LENGTH_SHORT).show();*/
                if(position==0 || position==2){
                    llSponseredImage.setVisibility(View.GONE);
                    llSponserdByText.setVisibility(View.GONE);
                }else if(position==1){
                    llSponseredImage.setVisibility(View.VISIBLE);
                    llSponserdByText.setVisibility(View.VISIBLE);

                    imgsponser1.setImageResource(R.drawable.sponser1);
                    imgsponser2.setImageResource(R.drawable.sponser2);
                    imgsponser3.setImageResource(R.drawable.sponser3);
                    imgsponser4.setImageResource(R.drawable.sponser4);
                }else if(position==3){
                    llSponseredImage.setVisibility(View.VISIBLE);
                    llSponserdByText.setVisibility(View.VISIBLE);

                    imgsponser1.setImageResource(R.drawable.sponser5);
                    imgsponser2.setImageResource(R.drawable.sponser6);
                    imgsponser3.setImageResource(R.drawable.sponser7);
                    imgsponser4.setImageResource(R.drawable.sponser8);
                }
            }

            @Override
            public void onPageScrolled(int position,
                    float positionOffset, int positionOffsetPixels) {
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });

        return rootView;
    }

    public class SlidesFragmentAdapter extends FragmentStatePagerAdapter implements IconPagerAdapter {

        private int[] Images = new int[] { R.drawable.first_image, R.drawable.second_image,
                R.drawable.third_image, R.drawable.four_image

        };

        private int[] ICONS = new int[] { R.drawable.first_image, R.drawable.second_image,
                R.drawable.third_image, R.drawable.four_image };

        private int mCount = Images.length;

        public SlidesFragmentAdapter(android.support.v4.app.FragmentManager fragmentManager) {
            super(fragmentManager);
        }

        @Override
        public Fragment getItem(int position) {
            return new DemoFragment(Images[position]);
        }

        @Override
        public int getCount() {
            return mCount;
        }

        @Override
        public int getIconResId(int index) {
            return ICONS[index % ICONS.length];
        }
        public float GetPageWidth (int position) {
            return 0.93f;
        }  
        public void setCount(int count) {
            if (count > 0 && count <= 10) {
                mCount = count;
                notifyDataSetChanged();
            }
        }
    }
}

person AndroidLearner    schedule 31.12.2014    source источник
comment
вы можете проверить это stackoverflow.com/questions/19331492/   -  person droid kid    schedule 31.12.2014


Ответы (1)


Я думаю, что этого можно добиться с помощью метода show() или add(). Если это действие без Tabhost, то это легко. В этом случае при переключении вкладок мы должны применять ту же логику.

Проверьте это решение

Думаю, это даст вам некоторое представление.

person droid kid    schedule 31.12.2014
comment
Спасибо за ваш ответ. Но решение, которое вы разместили, не работает для меня. Я пробовал, и оно показывает мне пустой фрагмент. - person AndroidLearner; 31.12.2014