ImageButtons Не изменяется при возврате к старому фрагменту пейджера. - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть HomeActivity, где я использовал ViewPager.Есть 2 фрагмента home1F и home2F, которые появляются, когда вы проводите вправо.HomeActivity имеет верхнюю панель (используется Linerlayout), где есть 2 кнопки изображения.Когда home1F находится на экране, одна кнопка отображается (другая невидима), а когда home2F находится на экране, другая кнопка отображается, а первая становится невидимой.Но когда я запускаю приложение, я обнаруживаю, что сначала появляется вторая кнопка вместо первой (когда есть home1F).Когда я провожу до home2F, ничего не происходит.Когда я провожу пальцем влево, чтобы вернуться домой, все равно ничего не происходит.

Вот код:

private class MyPagerAdapter extends FragmentPagerAdapter {

        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int pos) {
            switch(pos) {
                case 0:
                    //imagebutton-1 visible
                    //imagebutton-2 invisible
                    return Home1F.newInstance("FirstFragment, Instance 1");
                case 1:
                    //imagebutton-1 invisible
                    //imagebutton-2 visible
                    return Home2F.newInstance("SecondFragment, Instance 1");

            default: 
             //imagebutton-1 visible
            //imagebutton-2 invisible
            return Home1F.newInstance("FirstFragment, Instance 1");

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

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Попробуйте это

Покажите imageButton1 и скройте imageButton2 в onCreate вашей Активности

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scrolling);
    imag1.setVisibility(View.VISIBLE);
    imag2.setVisibility(View.GONE);

Так что при запуске вашего приложения оно будет отображать первую кнопку image искрыть второе изображение Кнопка

Теперь при переключении между вкладками

  mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            if(position==0){
                imag1.setVisibility(View.VISIBLE);
                imag2.setVisibility(View.GONE);
            }
            else if(position==1){
                imag1.setVisibility(View.GONE);
                imag2.setVisibility(View.VISIBLE);
            }

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });
0 голосов
/ 25 сентября 2018

если вы хотите отключить фактические отображаемые фрагменты, вам нужно избегать FragmentPagerAdapter и использовать FragmentStatePagerAdapter.

с помощью getItemPosition() мы можемобновить фрагменты.В приведенном ниже примере обновлены заголовки фрагментов:

 ViewPager pager = /* get my ViewPager */;
// assume this actually has stuff in it
final ArrayList<String> titles = new ArrayList<String>();

FragmentManager fm = getSupportFragmentManager();
pager.setAdapter(new FragmentStatePagerAdapter(fm) {
  public int getCount() {
      return titles.size();
 }

public Fragment getItem(int position) {
    MyFragment fragment = new MyFragment();
    fragment.setTitle(titles.get(position));
    return fragment;
}

public int getItemPosition(Object item) {
    MyFragment fragment = (MyFragment)item;
    String title = fragment.getTitle();
    int position = titles.indexOf(title);

    if (position >= 0) {
        return position;
    } else {
        return POSITION_NONE;
     }
   }
});
...