gpt4 book ai didi

java - 从表面 View 开始新 Activity

转载 作者:行者123 更新时间:2023-11-30 11:38:35 27 4
gpt4 key购买 nike

尝试从我的类 GameView.class 开始一个扩展 SurfaceView 的新 Activity 。有了这个(在 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

我不知道该怎么办了,需要帮助!

最佳答案

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();

有了这个上下文,您可以稍后开始您的 Activity :

    Intent intent = new Intent(mContext, ScoreScreen.class);
mContext.startActivity(intent);

关于java - 从表面 View 开始新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13583867/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com