Удалить метод никогда не используется, предупреждение для аннотации OnClick в Android Studio

Извините, если этот вопрос уже был задан. Я использую Butterknife 5.0 с последней версией Android Studio (0.5.7). Как удалить предупреждение «Метод никогда не используется» для методов, использующих аннотацию «OnClick» для ButterKnife. Я заметил, что Eclipse не выдает это предупреждение для методов «OnClick». заранее спасибо


person TMS    schedule 30.04.2014    source источник
comment
stackoverflow.com/a/54816338/3007795 - вроде того же   -  person Joyal    schedule 22.02.2019


Ответы (4)


Правильный способ подавления этих предупреждений в Android Studio — нажать Alt+Enter в методе, выдающем предупреждение Метод 'yourFunction()' никогда не используется, и выбрать

Suppress for methods annotated by 'butterknife.OnClick'
person Osvald Ivarsson    schedule 13.05.2014
comment
как отменить это действие? - person Adam Johns; 06.08.2015
comment
К вашему сведению, он добавляет именно то, что сказал @codesparkle (проверено с AS 2.0) - person seb; 01.02.2016

Просто добавьте эту аннотацию:

@SuppressWarnings("unused")

Просто так:

@SuppressWarnings("unused")
@OnClick(R.id.myButton)
public void clickHandler()
{
    // ...
}

Мое личное предпочтение (которое я считаю хорошей практикой) — добавить комментарий с кратким объяснением:

@SuppressWarnings("unused") // it's actually used, just injected by Butter Knife
person Konrad Morawski    schedule 03.05.2014
comment
можно подробнее: @SuppressWarnings({UnusedDeclaration}) @SuppressWarnings({UnusedParameters}) - person AndrewS; 16.11.2015

Ответ Освальда точен.

Однако, если вы хотите избежать отключения предупреждений отдельно для каждого типа аннотаций типа «масло-нож», следуйте его инструкциям, а затем откройте .idea/misc.xml и найдите этот раздел:

<component name="EntryPointsManager">
  <entry_points version="2.0" />
  <list size="1">
    <item index="0" class="java.lang.String" itemvalue="butterknife.OnClick" />
  </list>
</component>

В нем просто замените butterknife.OnClick на butterknife.*.

С этого момента все ваши внедренные обработчики событий будут обходить предупреждение.

person Adam    schedule 15.02.2015
comment
Неплохо, но я думаю, что в репозиторий обычно не помещают .idea файлов, поэтому каждый разработчик должен проделывать этот трюк индивидуально, в то время как аннотация работает автоматически для всех, поскольку она является неотъемлемой частью кодовой базы. - person Konrad Morawski; 11.05.2015
comment
@KonradMorawski Оба метода изменяют только файлы .idea, поэтому в любом случае у вас будет одна и та же проблема. Что является и не фиксируется в репозитории, полностью зависит от того, что репозиторий настроен на игнорирование. - person Tom; 18.08.2015
comment
@Tom нет, SuppressWarnings - это аннотация, используемая непосредственно в файлах кода. - person Konrad Morawski; 18.08.2015
comment
О, понятно, я имел в виду ответы Освальда и Codesparkle, которые изменяют только файл .idea/misc.xml. Вы имели в виду аннотации. Я просто перетасую сюда... - person Tom; 19.08.2015

Добавьте еще одну зависимость для компилятора:

Грейдл

dependencies {
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' // new line
    compile 'com.jakewharton:butterknife:8.4.0' // original library
}

Это рекомендуется на официальном сайте.

Не забудьте Создать -> Перестроить проект, чтобы он сгенерировал использование и убрал предупреждение.

person Alex Sheiko    schedule 16.10.2016