воссоздать условные фрагменты без кнопки - PullRequest
0 голосов
/ 26 июня 2019

В моем приложении есть четыре вкладки ButtonNavigationView с фрагментами, я хочу, чтобы две из них обновлялись каждый раз, когда я нажимал на них, а две другие не обновлялись каждый раз, когда я нажимал на них, как я могу это получить?

Домашняя активность

final Fragment factorsFragment = new FactorsFragment();
    final Fragment newFactorFragment = new NewFactorFragment();
    final Fragment productsFragment = new ProductsFragment();
    final Fragment checkList = new CheckList();

    final FragmentManager fm = getSupportFragmentManager();
    Fragment active = newFactorFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

        fm.beginTransaction().add(R.id.fragment_container, productsFragment, "4").hide(productsFragment).commit();
        fm.beginTransaction().add(R.id.fragment_container, factorsFragment, "3").hide(factorsFragment).commit();
        fm.beginTransaction().add(R.id.fragment_container, checkList, "2").hide(checkList).commit();
        fm.beginTransaction().add(R.id.fragment_container, newFactorFragment, "1").commit();

        SQLiteStudioService.instance().start(this);



    }
    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

            switch (item.getItemId()) {
                case R.id.navigation_home:
                    fm.beginTransaction().hide(active).show(factorsFragment).commit();
                    active = factorsFragment;
                    return true;
                case R.id.navigation_dashboard:
                    fm.beginTransaction().hide(active).show(newFactorFragment).commit();
                    active = newFactorFragment;
                    return true;
                case R.id.navigation_notifications:
                    fm.beginTransaction().hide(active).show(productsFragment).commit();
                    active = productsFragment;
                    return true;
                case R.id.navigation_checklist:
                    fm.beginTransaction().hide(active).show(checkList).commit();
                    active = checkList;
                    return true;
            }

            return false;
        }
    };

Я хочу, чтобы factorFragment и productFragment обновлялись, не добавляя swiperefreshlayout или пользовательскую кнопку обновления

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

1 Ответ

1 голос
/ 26 июня 2019

Вызовите все функции вашего factorFragment и productFragment в onResume соответствующих фрагментов.Изменения будут отражены при повторном вызове методов в onResume.

Фрагмент имеет смещение.Таким образом, если вы загружаете один фрагмент в действии, следующие несколько (зависит от того, что вы установили или смещение по умолчанию) фрагменты также инициализируются.Вот почему будет полезно вспомнить ваши функции в onResume.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...