Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DialogInterface与View OnClickListeners_Java_Android_Onclicklistener_Collision - Fatal编程技术网

Java DialogInterface与View OnClickListeners

Java DialogInterface与View OnClickListeners,java,android,onclicklistener,collision,Java,Android,Onclicklistener,Collision,为什么不能同时导入OnClickListener。我已经导入了android.view.view.OnClickListener但是当我想添加导入android.content.DialogInterface.OnClickListener时它给了我一个错误: import android.content.DialogInterface.OnClickListener与另一条导入语句冲突 这就是为什么,例如,当我需要实现一个对话框接口时,我必须编写OnClickListener的完整名称空间(即

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

import android.content.DialogInterface.OnClickListener与另一条导入语句冲突

这就是为什么,例如,当我需要实现一个
对话框接口时,我必须编写
OnClickListener
的完整名称空间(即


有人能给我解释一下吗?如果这是一个愚蠢的问题,我很抱歉。

我认为这是因为某些类(如
AlertDialog
)使用
对话框接口。OnClickListener
其中
OnClick
方法使用两个参数:

参数:
对话框-收到单击的对话框。
paranamonymousint-单击的按钮(例如DialogInterface.BUTTON1)或单击项目的位置

View.OnClickListener
接口中的
OnClick
方法只接受一个:

参数:
v-单击的视图


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

import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface;
有了这个进口

import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface;
然后,当您需要引用该特定接口时,您可以执行如下操作

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

这是因为
DialogInterface
是一个带有嵌套静态接口的接口,名为
OnClickListener
。这应该会更美观一点,它解决了名称冲突问题。

谢谢您的解释。干杯