尝试从扩展SurfaceView的类GameView.class开始一个新活动。 有了这个(在Stackoverflow上找到它):
Context context = GameView.this.getContext();
context.startActivity(new Intent(context, ScoreScreen.class));
我把它放在一个从一个单独的线程调用的方法中。 当它被触发时,应用程序就会冻结。我尝试将它直接放在onTouch事件中(以跳过整个游戏并更快地测试)并且它与以下内容一起崩溃:
11-27 08:00:00.430: W/dalvikvm(1772): threadid=12: thread exiting with uncaught exception (group=0x41e7b300)
11-27 08:00:00.430: E/AndroidRuntime(1772): FATAL EXCEPTION: Thread-598
11-27 08:00:00.430: E/AndroidRuntime(1772): java.lang.NullPointerException
11-27 08:00:00.430: E/AndroidRuntime(1772): at com.tricky.puzzlepoker.GameView.onDraw(GameView.java:173)
11-27 08:00:00.430: E/AndroidRuntime(1772): at com.tricky.puzzlepoker.MainThread.run(MainThread.java:38)
11-27 08:00:02.505: I/Process(1772): Sending signal. PID: 1772 SIG: 9
我不知道该怎么办,需要帮助!
答案 0 :(得分:1)
SurfaceView类从View扩展,没有onCreate()方法。但构造函数需要一个在创建GameView对象时必须覆盖的上下文。因此,我建议您将上下文存储到全局变量中,以便以后在此类中使用:
private class GameView extends SurfaceView {
private Context mContext;
...
public GameView(Context context, AttributeSet attrs, int defStyle){
super(context, attrs, defStyle);
this.mContext = context;
...
}
...
}
否则,您可以通过以下方式获取GameView类中其他任何位置的上下文:
mContext = getContext();
通过此背景,您可以稍后开始您的活动:
Intent intent = new Intent(mContext, ScoreScreen.class);
mContext.startActivity(intent);