Должен ли я каждый раз создавать новый экземпляр 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;
        }
    };
}

Какой из двух методов я должен использовать?

0 ответов

Другие вопросы по тегам