Почему ViewPager не работает в случае Switch - PullRequest
0 голосов
/ 24 апреля 2020

Я работаю над приложением Android. У меня есть основной фрагмент как фрагмент продукта. Внутри фрагмента продукта я вызываю еще два фрагмента. Этот фрагмент кода работает нормально (часть кода, которой я не поделился) . Есть еще одна логика c, которую я применил, когда щелкнул этот конкретный фрагмент внутри фрагмента Продукта, затем Alien Reader (тип датчика) должен открыть соединение, и антенна должна начать считывать значение для этого фрагмента. Для каждого фрагмента было назначил другой IP-адрес для инопланетянина. Для реализации этого внутри фрагмента продукта я применил логи c для случая коммутатора, например, если я нахожусь на фрагменте номер 0, инопланетное соединение для этого фрагмента должно открыться (172.168.1.10) и в фрагмент 1, инопланетное соединение для этого фрагмента должно открыться (172.168.1.11). Но когда я отлаживаю код, который обнаруживаю каждый раз, когда вызывается коммутатор 0, хотя я нахожусь на фрагменте 1 в моем приложении android. Как-то нет поднимая мою текущую позицию фрагмента.

Код ProductPagerAdapter

publi c Класс ProductPagerAdapter расширяет FragmentStatePagerAdapter {

SparseArray<Fragment> registeredFragments = new SparseArray<Fragment>();

private final List<Fragment> mFragmentList = new ArrayList<>();

private final List<String> mFragmentTitleList = new ArrayList<>();

public ProductPagerAdapter(FragmentManager fm) {
    super(fm);

}


@Override
public Fragment getItem(int position) {

    return mFragmentList.get(position);

}

public void addFrag(Fragment fragment, String title) {

    mFragmentList.add(fragment);

    mFragmentTitleList.add(title);
}

@Override
public int getCount() {
    return mFragmentList.size();
}

@Override
public CharSequence getPageTitle(int position) {
    return mFragmentTitleList.get(position);
}
public Fragment getRegisteredFragment(int position) {
    return registeredFragments.get(position);
}

@NonNull
@Override
public Object instantiateItem(ViewGroup container, int position) {

    Fragment fragment = (Fragment) super.instantiateItem(container, position);

    registeredFragments.put(position, fragment);

    return fragment;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {

    registeredFragments.remove(position);

    super.destroyItem(container, position, object);
}

}

Код ProductFragment:

@ Переопределить публикацию c void onResume () {

    super.onResume();

  Thread thread = new Thread(new Runnable() {

            @Override
        public void run() {

            try {



                switch (binding.feedViewPager.getCurrentItem()) {

                case 0:

                   alienreader2(Constants.M_RFID_IP);
                    break;
                case 1:

                    alienreader2(Constants.Q_RFID_IP);
                    break;
            }


            } catch(AlienReaderException e) {

                System.out.println("Error: " + e.toString());
            }
        }
    });
    thread.start();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...