6

为什么我不能同时导入OnClickListener. 我已经有了import android.view.View.OnClickListener;,但是当我想添加import android.content.DialogInterface.OnClickListener;它时,它给了我一个错误:

import android.content.DialogInterface.OnClickListener 与另一个 import 语句冲突

这就是为什么,例如,OnClickListener当我需要实现一个DialogInterface OnClickListener(即

.setPositiveButton(R.string.ok, new android.content.DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            })

谁能给我解释一下?如果这是一个愚蠢的问题,我深表歉意。

4

2 回答 2

10

您不能在同一个文件中导入两个具有相同名称的类。如果你用 name 导入两个类X并且你要求一个X,编译器不知道你指的是哪个类。在这些情况下有一个很好的折衷方案。您可以替换此导入...

import android.content.DialogInterface.OnClickListener;

有了这个导入...

import android.content.DialogInterface;

然后当你需要引用那个特定的接口时,你可以做这样的事情......

.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { ... })

这是有效的,因为DialogInterface它是一个具有嵌套静态接口的接口,名为OnClickListener. 这应该更好看一些,它解决了名称冲突问题。

于 2013-08-13T20:25:19.207 回答
0

我认为这是因为某些类(例如AlertDialog)与DialogInterface.OnClickListener方法OnClick采用两个参数的情况一起使用:

参数
dialog - 收到点击的对话框。
paramAnonymousInt - 被点击的按钮(例如DialogInterface.BUTTON1)或被点击的项目的位置。

OnClick来自View.OnClickListener接口的方法只需要一个:

参数
v - 被点击的视图。

于 2013-08-13T15:49:03.513 回答