[英]Start an Activity from a non-Activity class
我正在使用 Android Studio 制作一个小游戏,它有 3 个活动: Menu 、 Main(Game) 、 WinScreen 。 当我尝试从 Menu 转到 Main 或 WinScreen 到 Main 时,它工作得很好,但是当我尝试从 Main 活动启动活动时,出现错误。
我在 java 文件中有一个方法,可以检查玩家是否赢了,如果是这种情况,它应该启动 WinScreen 活动。
boolean checkWin(GameBoard gameboard){
if(compareTabs(gameboard) == true){
System.out.println("Win !");
Intent i = new Intent(MainActivity.this,WinActivity.class);
startActivity(i);
return true;
}
else{
return false;
}
}
这是我得到的错误:错误:不是封闭类:MainActivity
此方法位于名为 GameBoard 的文件中,GameBoard 由在 MainActivity 开始时启动的 GameView 类使用
我知道有数百个帖子与我的类似,但我已经尝试了我已经找到的所有内容,但似乎没有任何效果,而且我很确定这是一个非常愚蠢的问题。
我已经尝试过诸如Intent i = new Intent(this,WinActivity.class);
请注意,如果从 Activity Context 外部调用此方法,则 Intent 必须包含Intent#FLAG_ACTIVITY_NEW_TASK启动标志。 这是因为,如果不从现有 Activity 启动,则没有现有任务可以放置新 Activity,因此需要将其放置在自己单独的任务中。
更改checkWin()
的签名以包含一个Context
作为参数,然后在此处使用该Context
:
boolean checkWin(GameBoard gameboard, Context context){
if(compareTabs(gameboard) == true){
System.out.println("Win !");
Intent i = new Intent(context, WinActivity.class);
context.startActivity(i);
return true;
}
else{
return false;
}
}
如果要调用checkWin()
从一个Activity
,你可以提供this
作为Context
调用时,它的参数,因为Activity
是一个Context
:
(inside an Activity)
boolean win = whatever.checkWin(gameboard, this);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.