Je souhaite appeler startactivity pour le résultat lorsqu'un point de vue unique est détecté.StartActivitypour afficher le résultat personnalisé
Pour SingleTap sur la vue, je l'ai écrit la condition follwing dans la méthode OnTouch de la vue
@Override public boolean onTouchEvent(MotionEvent ev) {
if (!mSupportsZoom && !mSupportsPan) return false;
mScaleDetector.onTouchEvent(ev);
final int action = ev.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: {
final float x = ev.getX();
final float y = ev.getY();
mLastTouchX = x;
mLastTouchY = y;
mActivePointerId = ev.getPointerId(0);
break;
}
case MotionEvent.ACTION_MOVE: {
final int pointerIndex = ev.findPointerIndex(mActivePointerId);
final float x = ev.getX(pointerIndex);
final float y = ev.getY(pointerIndex);
if (mSupportsPan && !mScaleDetector.isInProgress()) {
final float dx = x - mLastTouchX;
final float dy = y - mLastTouchY;
mPosX += dx;
mPosY += dy;
//mFocusX = mPosX;
//mFocusY = mPosY;
invalidate();
}
mLastTouchX = x;
mLastTouchY = y;
break;
}
case MotionEvent.ACTION_UP: {
final float x = ev.getX();
final float y = ev.getY();
touchupX=x;
touchupY=y;
if(mLastTouchX == touchupX && mLastTouchY == touchupY){ //this is my condition to detect single tap on the view
PinchZoomPanActivity2.tapped(null, 100); //method for startactivityfor result which is in main activity
}
mActivePointerId = INVALID_POINTER_ID;
break;
}
case MotionEvent.ACTION_CANCEL: {
mActivePointerId = INVALID_POINTER_ID;
break;
}
case MotionEvent.ACTION_POINTER_UP: {
final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK)
>> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
final int pointerId = ev.getPointerId(pointerIndex);
if (pointerId == mActivePointerId) {
final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
mLastTouchX = ev.getX(newPointerIndex);
mLastTouchY = ev.getY(newPointerIndex);
mActivePointerId = ev.getPointerId(newPointerIndex);
}
break;
}
}
return true;
}
et la méthode taraudé MainActivity est comme suit
static void tapped(Activity activity, int requestCode){
activity.startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), 1);
}
mais cela ne fonctionne pas comme il forclos avec l'erreur de pointeur null d'erreur.
S'il vous plaît suggérer quel est le problème avec mon code.
ouais je viens de remarquer que, mais qu'est-ce que J'utilise là.je dois appeler l'activité mais, je suis confus. –
Faites-en un contexte plutôt qu'une activité et utilisez this.getContext() dans la vue. –
Oh merci, ça a marché. –