FragmentManager уже выполняет транзакции - PullRequest
0 голосов
/ 04 февраля 2019

В настоящее время я работаю над приложением, для которого я хочу иметь несколько фрагментов для своих просмотров.Я попытался инициализировать свои фрагменты в методах onCreate () и onStart ().Оба раза я получаю сообщение об ошибке «FragmentManager уже выполняет транзакцию». Оно также ссылается на возможный ноль для getActivity () в домашнем фрагменте.Я не могу найти обходной путь для этого.

//The spot where I am attempting to initialize the fragments with the InitializeFragment() method*
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            mAuth = FirebaseAuth.getInstance();
            firebaseFirestore = FirebaseFirestore.getInstance();

            mainToolbar = (Toolbar) findViewById(R.id.main_toolbar);
            setSupportActionBar(mainToolbar);

            getSupportActionBar().setTitle("Photo Blog");

            if(mAuth.getCurrentUser() != null) {

                mainbottomNav = findViewById(R.id.mainBottomNav);

                // FRAGMENTS
                homeFragment = new HomeFragment();
                notificationFragment = new NotificationFragment();
                accountFragment = new AccountFragment();

                initializeFragment();

                mainbottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                        Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.main_container);

                        switch (item.getItemId()) {

                            case R.id.bottom_action_home:

                                replaceFragment(homeFragment, currentFragment);
                                return true;

                            case R.id.bottom_action_account:

                                replaceFragment(accountFragment, currentFragment);
                                return true;

                            case R.id.bottom_action_notif:

                                replaceFragment(notificationFragment, currentFragment);
                                return true;

                            default:
                                return false;


                        }

                    }
                });


//The initializeFragment() method
    private void initializeFragment(){

            FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();

            fragmentTransaction.add(R.id.main_container, homeFragment);
            fragmentTransaction.add(R.id.main_container, notificationFragment);
            fragmentTransaction.add(R.id.main_container, accountFragment);

            fragmentTransaction.hide(notificationFragment);
            fragmentTransaction.hide(accountFragment);

            fragmentTransaction.commitNow();

        }

//The portion of my homeFragment that has the null warning

    Query firstQuery = firebaseFirestore.collection("Posts").orderBy("timestamp", Query.Direction.DESCENDING).limit(3);
                firstQuery.addSnapshotListener(getActivity(), new EventListener<QuerySnapshot>() {
                    @Override
                    public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {

                        if (!documentSnapshots.isEmpty()) {

                            if (isFirstPageFirstLoad) {

                                lastVisible = documentSnapshots.getDocuments().get(documentSnapshots.size() - 1);
                                blog_list.clear();

                            }

                            for (DocumentChange doc : documentSnapshots.getDocumentChanges()) {

                                if (doc.getType() == DocumentChange.Type.ADDED) {

                                    String blogPostId = doc.getDocument().getId();
                                    BlogPost blogPost = doc.getDocument().toObject(BlogPost.class).withId(blogPostId);

                                    if (isFirstPageFirstLoad) {

                                        blog_list.add(blogPost);

                                    } else {

                                        blog_list.add(0, blogPost);

                                    }


                                    blogRecyclerAdapter.notifyDataSetChanged();

                                }
                            }

                            isFirstPageFirstLoad = false;

                        }

                    }

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