这是我的自定义对话框类:
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
为什么会这样?
答案 0 :(得分: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();
}
})