Android OnClickListener相撞?

时间:2013-08-12 07:53:48

标签: android onclick

很抱歉这个奇怪的问题,我仍然是Android编程的新手。

我有以下代码:

import android.content.DialogInterface.OnClickListener;
import android.view.View.OnClickListener;

eclipse告诉我View.OnClickListener与另一个导入声明相撞。

我正在Dialog.OnClickListener使用AlertDialogView.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();
}

提前致谢。

3 个答案:

答案 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.
        }

});