2016-11-07 5 views
2

Редактировать: Нет, это не дубликат для данной ссылки, просим провести сравнение setOnClickListener и . Я даже не прошу сравнения, но я прошу о том, чтобы иметь реализацию View.OnClickListener.Почему мы реализуем View.OnClickListener, если нам нужно установить android: onClick в любом случае?

Пожалуйста, будьте свободны, чтобы голосовать заново.


Многие люди, по предпочтению, используйте

public class TrumpLocator extends Clinton implements View.onClickListener{ 
    @Override 
    public void onClick(View v){ 
     //... 
    } 
} 

Однако, если я не ошибаюсь, так или иначе, на вашем Button вы должны сделать:

android:onClick="onClick" 

Но , опять же, если я не ошибаюсь, , если мы не переопределим onClick и реализуем View.onClickListener, мы будем chieve тот же эффект:

//no override and no "implements onClickListener" 
public void onClick(View v){ 
    //... 
} 

и

android:onClick="onClick" 

Итак, есть ли какие-либо преимущества реализации метода над простым применением щелчка слушателя? Разве это не пустая трата кода?

+0

Это вопрос мнения. Код Java делает его более понятным, IMO –

+0

@ cricket_007 Я полностью это понимаю, но я уверен, что нет никаких преимуществ, так как реализация кажется очень бесполезной. –

+0

Как ваши фрагменты обрабатывают андроид: onClick? –

ответ

3

так или иначе, на кнопке вы должны сделать:

android:onClick="onClick" 

Нет, это не требуется.

Я думаю, что у вас есть это в обратном направлении. Имея android:onClick="onClick", вы нуждаетесь в a public void метод с этим именем в кавычках.

public void onClick(View v){ 
    //... 
} 

Это похоже на реализацию интерфейса, но не то же самое. Другими словами, это может так же хорошо быть android:onClick="handleClick", то вам нужно

public void handleClick(View v){ 
    //... 
} 

Люди не могут предпочесть это, потому что это может привести к опечаток и неопределенности, где прикрепленными щелчок слушателем.


Теперь Управлению не нужно реализовывать сам интерфейс, вы можете подключать анонимных слушателей класса к отдельным представлениям.

+0

Так что, в основном, если вы его реализуете, вам НЕ нужен общественный метод? –

+0

Если вы реализуете интерфейс, вам нужно реализовать его методы. В противном случае код не компилируется. Я говорю, что XML не требуется –

+0

Итак, когда вы используете 'OnClickListener', вам не нужно устанавливать android: onClick в XML? Никогда не знал этого. Я, должно быть, делал что-то неправильно в течение этих двух лет программирования на Android ... –

Смежные вопросы