2012-06-20 39 views
0

,這是我的自定義對話框類:的Android定製對話框的ImageButton onclicklistener

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(); 

      } 
     }) 

    } 


} 

由於某種原因,日食告訴我下面的錯誤上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

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(); 

     } 
    })