0

这是我的自定义对话框类:

package com.WhosAround.Dialogs;

import com.WhosAround.AppVariables;
import com.WhosAround.R;
import com.WhosAround.AsyncTasks.LoadUserStatus;
import com.WhosAround.Facebook.FacebookUser;

import android.app.Dialog;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

public class MenuFriend extends Dialog{

    private FacebookUser friend;
    private AppVariables app;

    public MenuFriend(Context context, FacebookUser friend) {
        super(context, android.R.style.Theme_Translucent_NoTitleBar);
        this.app = (AppVariables) context.getApplicationContext();
        this.friend = friend;
    }

    public void setDialog(String userName, Drawable userProfilePicture)
    {
        setContentView(R.layout.menu_friend);
        setCancelable(true);
        setCanceledOnTouchOutside(true);        
        TextView name = (TextView) findViewById(R.id.menu_user_name);
        TextView status = (TextView) findViewById(R.id.menu_user_status);
        ImageView profilePicture = (ImageView) findViewById(R.id.menu_profile_picture);
        ImageButton closeButton = (ImageButton) findViewById(R.id.menu_close);
        name.setText(userName);         
        profilePicture.setImageDrawable(userProfilePicture);

        if (friend.getStatus() != null)
            status.setText(friend.getStatus());
        else
            new LoadUserStatus(app, friend, status).execute(0);
        closeButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                dismiss();

            }
        })

    }


}

出于某种原因,eclipse 在 closeButton imageButton 上告诉我以下错误:

The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (new DialogInterface.OnClickListener(){})

The type new DialogInterface.OnClickListener(){} must implement the inherited abstract method DialogInterface.OnClickListener.onClick(DialogInterface, int)

The method onClick(View) of type new DialogInterface.OnClickListener(){} must override or implement a supertype method

这是为什么 ?

4

1 回答 1

0

OnClickListener接口来自子类。您可能正在导入DialogInterface.OnClickListener,而不是View.OnClickListener.

接口的不同子类有不同的 onClick() 实现。

public interface View.OnClickListener() {
    // This implementation gives you a reference to the View that was clicked.
    onClick(View v);
}
public interface DialogInterface.OnClickListener() {
    // This implementation gives you references to the dialog in which the click happend
    onClick(DialogInterface dialog, int which);
}

将您更改setOnClickListener为:

closeButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            dismiss();

        }
    })
于 2012-06-20T22:36:52.740 回答