2012-08-01 54 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