2012-08-01 16 views
0

如何在擴展ImageView的類中顯示吐司消息。我想將它放在onDoubleTap方法中,以便向用戶顯示一條消息,指出哪個像素是雙擊的。我有以下兩類:自定義圖像視圖的Toast消息

public class TouchImageView extends ImageView 
{ 
    .... 
    final GestureDetector mGestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() 
    { 
     @Override 
     public boolean onDoubleTap(MotionEvent e) 
     {   
      Toast.makeText(getApplicationContext(), "Pixel", Toast.LENGTH_SHORT).show(); 

      return true; 
     } 
     ... 
    } 

public class DisplayMap extends Activity 
{ 
    int width; 
    int height; 
    double imageSize; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 

    TouchImageView img = new TouchImageView(getApplicationContext()); 

    Bitmap mapImage = BitmapFactory.decodeResource(getResources(), R.drawable.testimage); 
    img.setImageBitmap(mapImage); 
    img.setMaxZoom(4f); 
    setContentView(img); 
    ... 
} 

上面的代碼將無法工作,因爲 getApplicationContext()是未定義ImageView的。

感謝

回答

0

讓你的TouchImageView類接受Context對象的構造。

Context context; 

public TouchImageView(Context context) { 
    super(context); //Thanks for this tip 
    this.context = context;  
} 

final GestureDetector mGestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() 
{ 
    @Override 
    public boolean onDoubleTap(MotionEvent e) 
    {   
     Toast.makeText(context, "Pixel", Toast.LENGTH_SHORT).show(); 

     return true; 
    } 
    ... 
} 

和發送Activity.this對象在TouchImageView對象

+0

試過這個,它的工作。謝謝 – mdl11 2012-08-02 03:26:07

0

如果你繼承ImageView的,該方法的getContext()將會被繼承下來。用它來顯示你的吐司。要明確另一個答案,如果你是繼承ImageView只是調用超(上下文);不要擔心維護自己的上下文實例。

此:

Context context; 

public TouchImageView(Context context) { 
    this.context = context;  
} 

應該是:

Context context; // <-- remove this 

public TouchImageView(Context context) { 
    super(context); 
} 

希望這有助於。

+0

爲了跳出你的答案,喬希,你不能調用'getContext()',因爲那行代碼是匿名類而不是'TouchImageView'類。 – tolgap 2012-08-01 21:37:25

+0

http://developer.android.com/reference/android/view/View.html#getContext()getContext是一個視圖方法,圖像視圖擴展了View,而這個夥伴正在擴展ImageView,因此獲取上下文的調用應該是有 – josh527 2012-08-01 22:55:32

+0

我沒有嘗試過,但會。感謝大家 – mdl11 2012-08-02 03:25:47