【问题标题】:Android: How to go from MainActivity to SurfaceviewAndroid:如何从 MainActivity 转到 Surfaceview
【发布时间】:2017-03-22 04:01:54
【问题描述】:

我有一个 Activity GamePanel,它使用下面的上下文代码扩展 Surfaceview。

public GamePanel(Context context)
{
super(context);
this.mContext = context;
mContext = getContext();

//add the callback to the surfaceholder to intercept events
getHolder().addCallback(this);

thread = new MainThread(getHolder(), this);

//make gamePanel focusable so it can handle events
setFocusable(true);
}

现在我用它从 GamePanel 转到我的 MainMenu 类。

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

这是我的问题:当我按下按钮时,如何从 MainMenu Activity 返回到扩展 Surfaceview 的 Gamepanel Activity?

编辑:这是我的 GamePanel Activity 的第一行:

public class GamePanel extends SurfaceView implements SurfaceHolder.Callback

【问题讨论】:

  • Activity 不能扩展 SurfaceView。你做错了什么。显示类的顶行,您可以在其中看到 public class GamePanel extends...,以便我们了解您的 GamePanel 到底是什么
  • 这是第一行代码

标签: java android android-activity surfaceview


【解决方案1】:

正如我所说,它不是Activity。请停止将其称为Activity。它是一个SurfaceView,它是View 的子类,并且不是Activity 的子类。
要开始活动,您只需要一个 Context 实例。
每个View 都可以通过调用getContext() 来提供Context 的实例
所以要从View 开始另一个Activity,你可以调用

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

【讨论】:

  • 感谢您更正我的术语。但我在活动 MainMenu 中,从那里我想去 SurfaceView。如何在 MainMenu 活动中引用 SurfaceView 上下文?
  • @DavidPrabhu,哦,对不起,搞砸了你的问题。好的。您的 SurfaceView 归某个 Activity 所有。您应该以与开始 MainMenu 相同的方式开始该活动
  • @DavidPrabhu,示例代码取决于您的代码。 Nodody 知道您在哪里使用 SurfaceView (GamePanel)。首先你展示它。
猜你喜欢
  • 2013-12-12
  • 2021-05-07
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
相关资源
最近更新 更多