Java Android:IntelliJ IDEA 12.1参数视图从未使用过

Java Android:IntelliJ IDEA 12.1参数视图从未使用过,java,android,eclipse,intellij-idea,Java,Android,Eclipse,Intellij Idea,请解释一下,为什么IntelliJ IDEA向我显示从未使用过的参数 public void onClick(视图){//从未使用参数'View' Toast.makeText(这是“Hello”,Toast.LENGTH_LONG).show(); } 但我知道,如果我删除这个从未使用过的参数(视图),Android会向我抛出运行时异常 为什么IntelliJ IDEA v12.1会显示这样的警告,而Eclipse不会显示。 如何配置IntelliJ IDEA以隐藏所有Android项目的

请解释一下,为什么IntelliJ IDEA向我显示从未使用过的参数

public void onClick(视图){//从未使用参数'View'
Toast.makeText(这是“Hello”,Toast.LENGTH_LONG).show();
}
但我知道,如果我删除这个从未使用过的参数(视图),Android会向我抛出运行时异常

为什么IntelliJ IDEA v12.1会显示这样的警告,而Eclipse不会显示。
如何配置IntelliJ IDEA以隐藏所有Android项目的此类警告?

因为您从未在方法
onClick
中使用参数
view
。但是这个的默认签名

例如,如果要在方法中使用参数,IntelliJ IDEA不会显示“从未使用过参数”

更新:

例如,主布局中有3个按钮:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_switcher"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

<Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/btn1"
        android:onClick="onClick"
        />
<Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/btn2"
        android:onClick="onClick"
        />
<Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/btn3"
        android:onClick="onClick"
        />

</LinearLayout>

这是如何使用“查看”的一个示例,您会看到此警告,因为默认情况下,未使用符号检查已启用,并且配置为显示所有未使用的参数。虽然在这种特定情况下这不是一个问题,但它可能有助于跟踪其他情况下的错误(例如,由于输入错误而不是实际的方法参数,使用具有类似名称的局部变量时)

此检查提供了许多选项,您可以根据需要对其进行调整,例如禁用检查参数选项。或者您可以定义注释,如
@Unused
,以便IDE忽略带有这些注释的任何参数,或者您可以从Alt+Enter菜单、右箭头子菜单(对于类/方法/语句抑制、编辑检查设置或完全禁用)中抑制此检查


我不认为更改警告设置是最好的解决方案

相反,您可以尝试以下代码:

public void onClick(@SuppressWarnings("UnusedParameters")View ignored) { // Parameter 'ignored' never used
    Toast.makeText(this, "Hello", Toast.LENGTH_LONG).show();
}

对于Kotlin,使用以下句子来消除此警告:

fun onClick(@Suppress("UNUSED_PARAMETER")view: View) {

}

上面所说的一切都是伟大而真实的。以下是另一种方式:

起初我认为没有必要使用这个参数。这是因为,在我正在处理的应用程序中,只有一个视图(可能是按钮)调用这个OnClick回调

也就是说,不需要检查参数。只有一个按钮,一定是它

因此,我感到困惑、愤怒或悲伤:

  • API需要参数
  • IDE抱怨没有使用该参数

但我们可以从另一个角度来看:

不需要检查参数。只有一个按钮,一定是它

我的项目中没有任何东西可以确保前面的陈述。今天可能是真的,但在项目的后期可能会变得不真实。它也可能因错误或意外而不真实。一个简单的错误

当开发人员希望应用程序易于维护时,他会怎么做?他检查或确保他想要的事实是真实的

因此,我选择的让这个警告消失的方式是:

fun start_sync(button : View){
    assert(button.id == R.id.my_only_button)
    //...
}

最后,IDE和API都是正确的,错误的是假设我不需要这个参数。

我知道,但举个例子,eclipse没有对此发出警告。是否可以将IntelliJ IDEA配置为对所有android项目隐藏此类警告?是的,请检查这只是一个警告,表明您没有忘记任何东西。这应该得到尊重。我尊重你!我不想使用view参数,我只想向用户敬酒,为什么要使用if-else语句这很愚蠢。我编写了这段代码,以表明如果在方法“view”中使用,那么ide不会发誓。只要使用你的代码-他一切都好。但是,如果更多的控件将处理相同的方法,那么你必须比较他的id,以了解采取什么行动。抑制真的是答案吗?如果按照lint的建议,将该值替换为“uuu”会怎么样?目前,从Android Studio 3.5开始,使用discard(“”)会导致编译错误:“,uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu以避免
冗余抑制
lint。
public void onClick(@SuppressWarnings("UnusedParameters")View ignored) { // Parameter 'ignored' never used
    Toast.makeText(this, "Hello", Toast.LENGTH_LONG).show();
}
fun onClick(@Suppress("UNUSED_PARAMETER")view: View) {

}
fun start_sync(button : View){
    assert(button.id == R.id.my_only_button)
    //...
}