2016-10-12 2 views
2

J'ai créé un SurfaceView (vous pouvez le voir dans ce qui suit) et a commencé à partir de mon activité principale. J'ai écrasé la méthode onTouchEvent dans SurfaceView et le problème est que les données que je veux avoir enregistrées avec Log.d ne sont pas enregistrées, je n'ai aucun message ... Est-ce que quelqu'un a une idée de comment je peux réparer ça? ?On Touch Méthode SurfaceView Android ne fonctionne pas

Mon SurfaceView:

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Rect; 
import android.util.Log; 
import android.view.MotionEvent; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 
import android.view.View; 





public class MainGamePanel extends SurfaceView implements SurfaceHolder.Callback { 

private float top; 
private float left; 
private float bottom; 
private float right; 

private MainThread thread; 

MainGamePanel(Context context) { 
    super(context); 
    getHolder().addCallback(this); 
    thread = new MainThread(getHolder(), this); 
    setFocusable(true); 
} 


@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    setWillNotDraw(false); 
    thread.setRunningMode(MainThread.RUNNING); 
    thread.start(); 
} 

@Override 
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 

} 

@Override 
public void surfaceDestroyed(SurfaceHolder holder) { 
    boolean retry = true; 
    while (retry) { 
     try { 
      thread.join(); 
      retry = false; 
     } catch (Exception e) { 
     } 
    } 
} 


@Override 
public boolean onTouchEvent(MotionEvent event) { 

    float x = event.getX(); 
    float y = event.getY(); 

    right = x + 30; 
    left = x - 30; 
    top = y - 30; 
    bottom = y + 30; 

    Log.d("tag", x + " " + y); 

    return true; 
} 

@Override 
protected void onDraw(Canvas canvas) { 

} 

} 

Mon Activité principale:

import android.app.Activity; 
import android.os.Bundle; 
import android.os.PersistableBundle; 



public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { 
    super.onCreate(savedInstanceState, persistentState); 
    setContentView(new MainGamePanel(getApplicationContext())); 

} 
} 

Répondre

0

Essayez de changer "getApplicationContext()" à "ce" en suivant une partie de code:

setContentView(new MainGamePanel(getApplicationContext())); 

à

setContentView(new MainGamePanel(this));