很抱歉这个奇怪的问题,我仍然是Android编程的新手。
我有以下代码:
import android.content.DialogInterface.OnClickListener;
import android.view.View.OnClickListener;
eclipse告诉我View.OnClickListener
与另一个导入声明相撞。
我正在Dialog.OnClickListener
使用AlertDialog
,View.OnClickListener
使用Button
。我使用此Button
来显示AlertDialog
。如何为此做好事和正确的方式?
这是我的代码:
// This OnClickListener is still showing error in eclipse
btnListLocation.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
showAllListLocation(location);
}
});
private void showAllListLocation(String[] location) {
AlertDialog.Builder b = new Builder(this);
b.setTitle("Choose your location");
b.setSingleChoiceItems(location, 0, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
b.show();
}
提前致谢。
答案 0 :(得分:3)
按钮扩展查看。因此,对于按钮,您可以使用 View.OnClickListener
对于对话框 - DialogInterface.OnClickListener
Button b;
//b init
b.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
new AlertDialog.Builder(_context_)
.setCancelable(false)
.setTitle("MyDialog")
.setMessage("MyMessage")
.setPositiveButton("Ok", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dlg, int which)
{
//Logic
}
}).show();
}
});
答案 1 :(得分:3)
您可以显式声明import
的类型以避免碰撞,而不是使用OnClickListener()
:
Button a = new Button(MainActivity.this);
a.setOnClickListener(new android.view.View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
MainActivity.this);
alertDialogBuilder.setPositiveButton("abc", new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
});
希望这有帮助。
答案 2 :(得分:0)
许多类都有一个点击侦听器来处理点击事件。
您正在导入2个类,因此编译器在您调用onClick()
后不知道将使用哪个类。它警告你。
如果您要覆盖Button的onClick()
功能,则必须使用View.OnClickListener
。
按钮:
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
// Here is where button click runs.
}
});