title: Fragments get re-created upon bottomnavigationview change item click
body: <p>I have an activity with a Framelayout and a BottomNavigationView...I have 4 fragments (A,B,C,D)...The thing is when I switch from A to B after clicking on the menu item to load fragment B, fragment A gets destroyed...I added a Log message on all the callback methods (OnAttach, OnCreate, OnCreateView.....etc) involved in Fragment lifecycle and onDestroyView is ALWAYS called when I change fragments...So when I come back to a previously opened fragment, onCreateView gets called again..</p>
  
  <p>Here's my activity class:</p>
  
  <pre><code>    public class Home extends AppCompatActivity
  {
      private BottomNavigationView.OnNavigationItemSelectedListener 
  mOnNavigationItemSelectedListener
          = new BottomNavigationView.OnNavigationItemSelectedListener() {
  
      @Override
      public boolean onNavigationItemSelected(@NonNull MenuItem item)
      {
          Fragment fragment = null;
          Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
          switch (item.getItemId())
          {
              case R.id.navigation_a:
                  if (!(currentFragment instanceof FragmentA))
                      fragment = FragmentA.newInstance();
                  break;
              case R.id.navigation_b:
                  if (!(currentFragment instanceof FragmentB))
                      fragment = FragmentB.newInstance();
                  break;
              case R.id.navigation_c:
                  if (!(currentFragment instanceof FragmentC))
                      fragment = FragmentC.newInstance();
                  break;
              case R.id.navigation_d:
                  if (!(currentFragment instanceof FragmentD))
                      fragment = FragmentD.newInstance();
                  break;
          }
  
          if (fragment != null) {
              getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
              return true;
          }
  
          return false;
      }
  
  };
  
  
  //TODO Handle life-cycle methods when switching between fragments
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_home);
      Toolbar toolbar = findViewById(R.id.toolbar);
      setSupportActionBar(toolbar);
  
      FragmentManager fm = getSupportFragmentManager();
      fm.beginTransaction()
              .add(R.id.fragment_container, FragementA.newInstance())
              .commit();
      fm.popBackStack();
  
      BottomNavigationView navigation = findViewById(R.id.navigation);        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
  }
  
  public boolean onKeyDown(int keyCode, KeyEvent event)
  {
      if (keyCode == KeyEvent.KEYCODE_BACK)
      {
          moveTaskToBack(true);
          return true;
          }
  
      return false;
      }
  
  }
  </code></pre>
  
  <p>I'd like to know what am I missing here actually....Thanks in advance</p>