Должен ли я каждый раз создавать новый экземпляр Fragment с BottomNavigationView - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь создать приложение для 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;
        }
    };
}

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

...