Я работаю над приложением 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();
}