0

ImageView を拡張するクラス内からトースト メッセージを表示するにはどうすればよいですか。これを onDoubleTap メソッドに配置して、どのピクセルがダブルタップされたかについてユーザーにメッセージを表示したいと思います。次の2つのクラスがあります。

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.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 に答える