Java Android:IntelliJ IDEA 12.1参数视图从未使用过
请解释一下,为什么IntelliJ IDEA向我显示从未使用过的参数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项目的
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)
//...
}