Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 来自自定义图像视图的Toast消息_Android_Imageview_Toast - Fatal编程技术网

Android 来自自定义图像视图的Toast消息

Android 来自自定义图像视图的Toast消息,android,imageview,toast,Android,Imageview,Toast,如何在扩展ImageView的类中显示toast消息。我想把它放在onDoubleTap方法中,这样它就可以向用户显示一条消息,告诉用户刚才双击了哪个像素。我有以下两门课: public class TouchImageView extends ImageView { .... final GestureDetector mGestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener

如何在扩展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);
    ...
}
上面的代码不起作用,因为 ImageView的getApplicationContext()未定义


感谢让您的
TouchImageView
类构造函数接受
上下文
对象

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对象中的此对象

如果您正在子类化ImageView,则会继承方法getContext()。用这个来展示你的祝酒词

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

这:

应该是:

Context context; // <-- remove this

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

上下文;//josh,要直接回答您的问题,您不能调用
getContext()
,因为该行在匿名类中,而不是
TouchImageView
类中。getContext是一个视图方法,image view扩展了view,这个家伙正在扩展ImageView,所以获取上下文的调用应该在那里。我还没有尝试过这个方法,但会的。谢谢大家
Context context; // <-- remove this

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