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はcloseButtonimageButtonで次のエラーを通知します。

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 に答える