Активность к активности, которая содержит фрагменты для нижней панели навигации, никогда не попадает во фрагмент, но к активности, которая удерживает их с помощью FrameLayout - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть SplashScreen Активность , которая запускается после проверки входа пользователя в систему, например:

 /* New Handler to start the Home-Activity
     * and close this Splash-Screen after some seconds.*/
    new Handler().postDelayed(new Runnable(){
        @Override
        public void run() {
            /* Create an Intent that will start the Menu-Activity. */
            Intent intent = new Intent(SplashScreen.this, HomeActivity.class);
            overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
            startActivity(intent);
            progressBar.setVisibility(View.GONE);
        }
    }, SPLASH_DISPLAY_LENGTH);
  • Всякий раз, когда экран spla sh заканчивается, он запускается на MainScreen Activity , который содержит FramLayout для фрагментов и нижней панели навигации.

  • Но когда он запускается, вместо запуска на HomeFragment в нижней навигационной панели он показывает HomeScreen Activity Layout.

  • Что я Когда наступает SplashScreen Деятельность , он переходит непосредственно к HomeFragment .

  • Вот код для HomeScreen Activity :

         bottomBarLayout.addTab(tab_home).addTab(tab_wish)
            .addTab(tab_notifications)
                .addTab(tab_profile)
                    .create(new BottomBarLayout.OnTabSelectedListener() {
                @Override
                public void onTabSelected(BottomTabView tab) {     
    
    
                    //Log.e(TAG, "onTabSelected: =="+tab.getTabPosition() );
    
                    Fragment selectedFragment = null;
    
                    switch (tab.getTabPosition()){
                        case 0:
                            Toast.makeText(getApplicationContext(), "Acceuil", Toast.LENGTH_SHORT).show();
                            selectedFragment = new HomeFragment();
                            break;
                        case 1:
                            Toast.makeText(getApplicationContext(), "Voeux", Toast.LENGTH_SHORT).show();
                            selectedFragment = new WishListFragment();
                            break;
                        case 2:
                            Toast.makeText(getApplicationContext(), "Notifications", Toast.LENGTH_SHORT).show();
                            selectedFragment = new NotificationsFragment();
                            break;
                        case 3:
                            Toast.makeText(getApplicationContext(), "Profile", Toast.LENGTH_SHORT).show();
                            selectedFragment = new ProfileFragment();
                            break;
    
                    }
                    getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,
                            selectedFragment).commit();
    
                }
    
                @Override
                public void onTabUnselected(BottomTabView tab) {
    
                }
    
                @Override
                public void onTabReselected(BottomTabView tab) {
    
                }
            });
    }
    
    • И FragmenHome:

      public class HomeFragment extends Fragment {
      
      public HomeFragment() {
      // Required empty public constructor
      }
      
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
                           Bundle savedInstanceState) {
      
      // Inflate the layout for this fragment
      return inflater.inflate(R.layout.fragment_home, container, false);
      }
      }
      

1 Ответ

0 голосов
/ 18 апреля 2020

Итак, я исправил проблему, связанную с этим простым методом в моей деятельности MainsScreen:

private void replaceFragment(Fragment fragment){
    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.replace(R.id.frame_layout, fragment);
    transaction.commit();
}

, и вызвал его в onCreate следующим образом:

replaceFragment(new HomeFragment());

HomeFragment - это фрагмент, который я хочу go, когда spla sh прокручивается, а теперь, когда он заканчивается, он переходит непосредственно к вкладке «ели» на нижней панели навигации.

...