#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);
Комментариев нет:
Отправить комментарий