为什么我不能同时拥有OnClickListener
的导入。我已经import android.view.View.OnClickListener;
但是当我想添加import android.content.DialogInterface.OnClickListener;
时,它会给我一个错误:
导入android.content.DialogInterface.OnClickListener与另一个导入语句冲突
这就是为什么,当我需要实现OnClickListener
DialogInterface
时,我必须编写OnClickListener
的完整命名空间(即
.setPositiveButton(R.string.ok, new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
任何人都能解释一下这个吗?如果这是一个愚蠢的问题,我道歉。
答案 0 :(得分:10)
您无法在同一文件中导入两个具有相同名称的类。如果导入两个名为X
的类并且要求X
,则编译器不知道您指的是哪个类。在这些情况下有一个很好的妥协。您可以替换此导入...
import android.content.DialogInterface.OnClickListener;
有了这个导入......
import android.content.DialogInterface;
然后当你需要引用那个特定的界面时,你可以做这样的事情......
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { ... })
这是有效的,因为DialogInterface
是一个带有名为OnClickListener
的嵌套静态接口的接口。这应该对眼睛更好一点,它解决了名称碰撞问题。
答案 1 :(得分:0)
我认为这是因为某些类(如AlertDialog
)与DialogInterface.OnClickListener
一起工作,其中OnClick
方法有两个参数:
参数的:
对话框 - 收到点击的对话框。
paramAnonymousInt - 单击的按钮(例如DialogInterface.BUTTON1)或单击项目的位置。
OnClick
界面中的View.OnClickListener
方法只有一个:
参数的:
v - 点击的视图。