Страницы

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

воскресенье, 29 декабря 2019 г.

Обработка нажатия

#java #android


На просторах интернета столкнулся с двумя интересными конструкциями, и хоть я пользуюсь
только первой, интерес всё же взял вверх, какую из них лучше использовать в своих проектах?
Допускаю что вопрос банален, но не спросить я не могу;)
Итак, первая конструкция:

private OnClickListener myListener = new OnClickListener() {
    public void onClick(View v) {
        // do something when the button is clicked
    }
};

protected void onCreate(Bundle savedValues) {
    ...
    // Capture our button from layout
    Button button = (Button)findViewById(R.id.close);
    // Register the onClick listener with the implementation above
    button.setOnClickListener(myListener);
    ...
}


И вторая не менее интересная конструкция:


Ответы

Ответ 1



Я бы не рекомендовал использовать второй вариант по следующим причинам: Его можно использовать только с Activity. Фрагменты в пролете. Вам в любом случае не отказаться от использования первого варианта, а одни и те же действия лучше делать одним способом, соответственно раз от первого не отказаться - лучше отказаться от второго. Так можно подписаться только на onClick, остальные калбеки в пролете, так что опять таки для однообразия лучше и на onClick подписываться так же как на остальные. Если вы будете использовать второй вариант, то когда ваш код возьмет человек не пользующийся этим способом ему будет очень сложно понять как же управление попадает в метод который вроде нигде не вызывается. Да и вы сами спустя время можете забыть где же используется метод, а Android Studio будет показывать что он нигде не используется. Из предыдущего пункта так же вытекает что при рефакторинге можно переименовать метод и не заметить что он использовался в каком то xml, особенно если он использовался в нескольких вариантах разметки. В общем моё мнение: хотите меньше проблем - не используйте второй вариант.

Ответ 2



Все три конструкции имеют место быть. Какую использовать? - это вопрос организации кода, если хотите знать досконально, для чего сделано подобное. Синтаксический сахар, удобство - называйте, как хотите. Чтобы ваш код был более читаемым, либо просто некоторым удобнее через XML (ведь есть разработчики, пришедшие с других языков, они могли пользоваться одним из вариантов, и если он имеется здесь - будет проще привыкнуть к новому инструменту). Ваш вопрос не имеет определенного ответа. Это субъективная вещь и каждый делает, как посчитает нужным.

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

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