Должен ли я каждый раз создавать новый экземпляр Fragment с BottomNavigationView
Я пытаюсь создать приложение для Android с BottomNavigationView и фрагментов. Мой код:
public class MainActivity extends AppCompatActivity {
//some code
//some code
//some code
//some code
private BottomNavigationView.OnNavigationItemSelectedListener
mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
getFragmentManager().beginTransaction().replace(R.id.myframe, new myframeHome).commit();
return true;
case R.id.navigation_dashboard:
getFragmentManager().beginTransaction().replace(R.id.myframe, new myframeDashboard).commit();
return true;
case R.id.navigation_notifications:
getFragmentManager().beginTransaction().replace(R.id.myframe, new myframeNotifications).commit();
return true;
}
return false;
}
};
}
Должен ли я создавать новый объект каждого класса каждый раз, когда пользователь выбирает другой пункт в меню?
Это хорошая практика для создания одного объекта для каждого класса, как показано ниже?
public class MainActivity extends AppCompatActivity {
//some code
//some code
//some code
//some code
private final Fragment home = new myframeHome();
private final Fragment dashboard = new myframeDashboard();
private final Fragment notifications = new myframeNotifications();
private BottomNavigationView.OnNavigationItemSelectedListener
mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
getFragmentManager().beginTransaction().replace(R.id.myframe, home).commit();
return true;
case R.id.navigation_dashboard:
getFragmentManager().beginTransaction().replace(R.id.myframe, dashboard).commit();
return true;
case R.id.navigation_notifications:
getFragmentManager().beginTransaction().replace(R.id.myframe, notifications).commit();
return true;
}
return false;
}
};
}
Какой из двух методов я должен использовать?