Android 从导航栏中选择元素会冻结加载

Android selecting element from navigation bar freezes load

我有一个带有多个元素的底部导航栏,可以将我带到不同的片段。

 bottomNavigationView.setOnNavigationItemSelectedListener
            (new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    Fragment selectedFragment = null;
                    switch (item.getItemId()) {
                        case R.id.navigation_pokemon_description:
                            selectedFragment = PokemonDescriptionFragment.newInstance(MainActivity.getSelectedPokemon().get_id());
                            break;
                        case R.id.navigation_pokemon_evolutions:
                            selectedFragment = PokemonEvolutionsFragment.newInstance();
                            break;
                        case R.id.navigation_pokemon_moves:
                            selectedFragment = PokemonMovesFragment.newInstance();
                            break;
                        case R.id.navigation_pokemon_breeding:
                            selectedFragment = PokemonBreedingTrainingFragment.newInstance();
                            break;
                        case R.id.navigation_pokemon_location:
                            selectedFragment = PokemonLocationFragment.newInstance();
                            break;
                    }
                    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                    transaction.replace(R.id.frame_layout, selectedFragment);
                    transaction.commit();
                    return true;
                }
            });

除了 Moves 片段外,所有片段都工作正常,当我按下它时,加载数据和显示片段大约需要 3 秒。

我想先显示片段,然后在加载数据时加载移动并显示进度条或类似内容。

这是我的片段:

public class PokemonMovesFragment extends Fragment {


   @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    databaseAccess = DatabaseAccess.getInstance(getContext());
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_pokemon_moves, container, false);
    this.view=view;
    initalizeAllComponents();
    initializePokemonData();
    initializePostDataPopulationComponents();
    getActivity().setTitle(getResources().getText(R.string.moves)+ " (" +selectedPokemon.getName() + ")");
    return view;
}
//The rest of the methods

只需将所有逻辑移入 onViewCreated,然后在逻辑之前显示 Progressbar,在逻辑之后隐藏 Progressbar

@Override
public View onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState)
        progressBar.visibility = View.VISIBLE; // Show Progress bar here
        initalizeAllComponents();
        initializePokemonData();
        initializePostDataPopulationComponents();
        getActivity().setTitle(getResources().getText(R.string.moves)+ " (" +selectedPokemon.getName() + ")");
        progressBar.visibility = View.INVISIBLE; // Hide Progress bar here
}