Sorry if this question has been asked before. I am using the Butterknife 5.0 with the latest version of Android Studio(0.5.7). How can I remove the "Method is never used" warning for methods that use the 'OnClick' Annotation of ButterKnife.I noticed that Eclipse doesnt give this warning for the 'OnClick' methods. Thanks in advance
-
https://stackoverflow.com/a/54816338/3007795 - kind of same – Joyal Feb 21 '19 at 21:22
5 Answers
The correct way in Android Studio to suppress these warnings is to press Alt+Enter on the method giving the Method 'yourFunction()' is never used warning, and selecting
Suppress for methods annotated by 'butterknife.OnClick'

- 1,243
- 9
- 6
Simply add this annotation:
@SuppressWarnings("unused")
Just like that:
@SuppressWarnings("unused")
@OnClick(R.id.myButton)
public void clickHandler()
{
// ...
}
My personal preference (which I see as good practice) is to add a comment with a brief explanation:
@SuppressWarnings("unused") // it's actually used, just injected by Butter Knife

- 8,307
- 7
- 53
- 91
-
5it can be more detailed: @SuppressWarnings({"UnusedDeclaration"}) @SuppressWarnings({"UnusedParameters"}) – AndrewS Nov 16 '15 at 16:46
-
@SuppressWarnings("unused") did not work for me, but @Suppress("unused") did. – Greelings Jul 12 '22 at 11:20
Osvald's answer is spot on.
However, if you want to avoid suppressing warnings separately for each type of butterknife annotation, follow his instructions, and then open up .idea/misc.xml
and find this section:
<component name="EntryPointsManager">
<entry_points version="2.0" />
<list size="1">
<item index="0" class="java.lang.String" itemvalue="butterknife.OnClick" />
</list>
</component>
Therein, simply replace butterknife.OnClick
with butterknife.*
.
From now on, all your injected event handlers will evade the warning.

- 15,537
- 2
- 42
- 63
-
Not bad, but I think one doesn't usually commit `.idea` files into the repository, so every developer has to do this trick individually, whereas an annotation works automatically for everyone since it's an integral part of the codebase – Konrad Morawski May 11 '15 at 14:21
-
@KonradMorawski Both methods only change `.idea` files so you'd have the same issue either way. What is and is not committed to a repository depends entirely on what the repository is configured to ignore. – Tom Aug 18 '15 at 03:11
-
@Tom no, SuppressWarnings is an annotation used in code files directly – Konrad Morawski Aug 18 '15 at 18:15
-
Oh I see, I was referring to Osvald's and Codesparkle's answers, which only change .idea/misc.xml file. You meant annotations. I'll just shuffle over here... – Tom Aug 18 '15 at 23:35
Add another dependency for the compiler:
Gradle
dependencies {
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' // new line
compile 'com.jakewharton:butterknife:8.4.0' // original library
}
This is recommended on the official website.
Remember to Build -> Rebuild Project, so it will generate usages and make the warning go away.

- 51
- 2
- 1
With Kotlin, you should use @Suppress("unused") instead of @SuppressWarnings("unused")
@Suppress("unused")
fun foo() {
}

- 4,964
- 7
- 34
- 70