Установка атрибута View, который находится в дочернем фрагменте - PullRequest
0 голосов
/ 27 марта 2020

My layout

Я хочу получить доступ к представлениям, которые находятся в дочерних элементах фрагмента и помещаются в ViewPager. Идея состоит в том, чтобы переключать (отключать / включать) счетчики при нажатии кнопки. Вращатели помещаются в отдельные фрагменты, которые отображаются в ViewPager, управляемом TabLayout:

// Snippet of code from Fragment A

final TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabLayout);
final ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewPager);

Fragment childFragment = new Fragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.replace(R.id.viewPager, childFragment).commit();

ViewPagerAdapter adapter = new ViewPagerAdapter(childFragment.getFragmentManager());

adapter.AddFragment(new fragment_unositelj(), "FragmentB");
adapter.AddFragment(new fragment_voditelj(), "FragmentC");
adapter.AddFragment(new fragment_pratitelj(), "FragmentD");

viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
FragmentB = viewPager.findViewById(R.id.FragmentB);
FragmentC = viewPager.findViewById(R.id.FragmentC);
FragmentD = viewPager.findViewById(R.id.FragmentD);

Я не знаю, как добиться, чтобы Spinner был отключен / включен во всех фрагментах детского спиннера. Я пытался установить переменную publi c в MainActivity и управлять атрибутом Spinners, основываясь на этом, но я не уверен, в какую часть жизненного цикла поместить его, потому что фрагмент B изначально завышен, а другие - при нажатии TabItem. Я надеюсь, что смог бы правильно описать свою проблему. Если что-то еще нужно, пожалуйста, дайте мне знать. Спасибо!

1 Ответ

0 голосов
/ 27 марта 2020

Я нашел решение этой проблемы, я не уверен, что это правильный путь, но сейчас он работает для меня. В FragmentB, Fragment C, FragmentD i добавлено

@Nullable
@Override
public View getView() {
    if (((MainActivity) getActivity()).getStatus() == 1) {
        mySpinner.setEnabled( true );
    } else
        mySpinner.setEnabled( false );
    return super.getView();

}

// (MainActivity) getActivity ()). GetStatus () - метод, который возвращает состояние, если он должен быть включен

...