0

如何在扩展 ImageView 的类中显示 toast 消息。我想把它放在 onDoubleTap 方法中,这样它就会向用户显示一条消息,说明什么像素被双击了。我有以下两个课程:

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 定义。

谢谢

4

2 回答 2

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;
    }
    ...
}

并在 TouchImageView 对象中发送您的 Activity.this 对象

于 2012-08-01T21:26:21.203 回答
0

如果你是 ImageView 的子类,getContext() 方法将被继承。用它来展示你的 Toast。

Toast.makeText(getContext(), "Pixel", Toast.LENGTH_SHORT).show();

为了澄清另一个答案,如果您是 ImageView 的子类,只需调用 super(context); 不要担心维护自己的上下文实例。

这:

 Context context;

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

应该:

Context context; // <-- remove this

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

希望这可以帮助。

于 2012-08-01T21:32:08.060 回答