Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Сократить немного код

#java #android #инспекция_кода


Можно ли как-то преобразовать в более короткое решение?
Как-то по-хитрому вынести в метод?

btnSignup.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startActivity(new Intent(LoginActivity.this, SignUpActivity.class));
    }
});

btnReset.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startActivity(new Intent(LoginActivity.this, ForgotPasswordActivity.class));
    }
});

    


Ответы

Ответ 1



Подключите либу Retrolambda. Так вы сможете писать код в стиле 8 явы. Ваш код превратится в это: btnSignup.setOnClickListener(v -> startActivity(new Intent(LoginActivity.this, SignUpActivity.class))); btnReset.setOnClickListener(v -> startActivity(new Intent(LoginActivity.this, ForgotPasswordActivity.class)));

Ответ 2



Есть предложение вынести создание Listener'а в отдельный метод, например private View.OnClickListener getListener(Class activityType){ return new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(LoginActivity.this, activityType)); } }; } Тогда ваш код будет выглядеть так: btnReset.setOnClickListener(getListener(ForgotPasswordActivity.class)); btnReset.setOnClickListener(getListener(SignUpActivity.class));

Ответ 3



Если кнопка ничего больше не умеет, кроме как переходить в активность, то лучше в xml дать ей onClick, а в активности реализовать соответствующие методы, а вообще вы можете создать метод. private void goTo(Class c) { startActivity(new Intent(context, c)); } И вызывать его из слушателей кнопок, передавая класс активности "куда" goTo(SignUpActivity.class); goTo(ForgotPasswordActivity.class);

Комментариев нет:

Отправить комментарий