onTouchEvent()导致“不幸的应用程序已停止”

问题描述:

我正在写一个游戏,您一直按屏幕让一架直升机飞行。现在,当直升机与屏幕边框碰撞(海特&宽度单个设备的)活动由onTouchEvent()导致“不幸的应用程序已停止”

((Activity) context).finish(); 

当玩家碰撞后快速度停止它的工作原理完全正常完成,但如果他持有的,我得到讨厌的错误。

吴丹。这就是为什么我怀疑的onTouchEvent法

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    // background music 
    mp.start(); 
    mp.setLooping(true); 
    copter.setVolume((float) 0.2, (float) 0.2); 
    if (event.getAction() == MotionEvent.ACTION_DOWN && fuel > 0) { 
     copter.start(); 
     copter.setLooping(true); 
     if (!player.getPlaying()) { 
      player.setPlaying(true); 
      player.setUp(true); 
      fuel--; 
     } else { 
      player.setUp(true); 
      fuel--; 
     } 
     return true; 
    } 
    if (event.getAction() == MotionEvent.ACTION_UP) { 
     copter.pause(); 
     player.setUp(false); 
     return true; 
    } 
    return super.onTouchEvent(event); 
} 

是否有某种方式忽略碰撞后TouchEvents?或者OnTouchEvent甚至不是问题?

+2

无需怀疑什么。去看看你的应用程序日志。在那里你会看到发生碰撞的确切位置。 – Okas

+1

请分享来自logcat的错误堆栈跟踪 – Opiatefuchs

检查活动是空内onTouchEvent()

下面的代码:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    Activity activity = getActivity(); 
    if(activity != null){ 
     // background music 
     mp.start(); 
     mp.setLooping(true); 
     copter.setVolume((float) 0.2, (float) 0.2); 
     if (event.getAction() == MotionEvent.ACTION_DOWN && fuel > 0) { 
      copter.start(); 
      copter.setLooping(true); 
      if (!player.getPlaying()) { 
       player.setPlaying(true); 
       player.setUp(true); 
       fuel--; 
      } else { 
       player.setUp(true); 
       fuel--; 
      } 
      return true; 
     } 
     if (event.getAction() == MotionEvent.ACTION_UP) { 
      copter.pause(); 
      player.setUp(false); 
      return true; 
     } 
     return super.onTouchEvent(event); 
    } 
    //return super.onTouchEvent(event); 
    return false; 
} 

根据你的代码,你应该使用:

if(((Activity)context) != null){ 

,而不是

Activity activity = getActivity(); 
if(activity != null){ 

如果这不是问题,请添加错误堆栈跟踪。


更新

要通过电子邮件发送堆栈跟踪:

Intent mailIntent = new Intent(Intent.ACTION_SENDTO); 
mailIntent.setData(Uri.parse("mailto:")); 
mailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
mailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
mailIntent.putExtra(Intent.EXTRA_TEXT, stacktraceText); 
Intent mailChooserIntent = Intent.createChooser(mailIntent, "Title"); 

context.startActivity(mailChooserIntent); 
+0

类型GamePanel的getActivity()方法未定义,所以我使用 – Krissini

+0

GamePanel activity = GamePanel.this;而不是 – Krissini

+0

你可以使用你正在使用的相同来完成我所举办的活动:((活动)上下文) – MarcGV