Задать вопрос

Как более правильно с логической и эстетической точки зрения открывать новую Activity?

1 вариант:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        Button firstButton = (Button) findViewById(R.id.firstButton);
        firstButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Context context = view.getContext();
                Intent intent = new Intent(context, secondActivity.class);
                context.startActivity(intent);
            }
        });
        ...
    }


2 вариант:

public void buttonClick(View view){
        Intent intent = new Intent(this, secondActivity.class);
        startActivity(intent);
}
  • Вопрос задан
  • 143 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
Beshere
@Beshere
Разработчик
Второй вариант имеет запас на перспективу - если надо будет вызывать активити из разных мест, совершать какие-то дополнительные действия, то код будет лаконичнее в итоге.

P.S. По-хорошему Intent для вызова должна возвращать вызываемая активити.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Правильно с эстетической и логической точек зрения создать класс Router, в котором будет метод openSomeScreen(), и который будет вызываться из всех нужных мест.
Две активити тебе, с большой вероятностью, не нужны, нужны фрагменты.
В коде активити/фрагмента должен быть необходимый минимум действий.
Ответ написан
@terminator-light
Согласен с Денис Загаевский. Ведь хорошим тоном считается иметь одну активити и множество фрагментов. На Google IO 2019 показали Navigation Architecture Components и призвали использовать Single Activity, потому что Activity - это точка входа, и она должна быть одна
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
19 дек. 2024, в 02:11
15000 руб./за проект
19 дек. 2024, в 02:09
11000 руб./за проект
19 дек. 2024, в 00:46
30000 руб./за проект