【发布时间】:2014-08-14 10:30:43
【问题描述】:
在View Class 上调用Activity class 的onBackPressed 方法?是否可以?那我该怎么办?感谢帮助
更新:我刚刚创建了我的游戏的 GameView,它扩展到 View Class。我创建了一个变量,每当我完成每个级别时都会递增,因此它将限制每场比赛的级别。所以我想实现一个onBackPressed method,只要玩家按下返回键,我就可以将递增变量设置为零。
FULL CODE: 主要活动
public class MainActivity extends Activity {
private GameView mGameView;
@Override
public void onBackPressed() {
if (mGameView.interceptBackPressed()) {
return;
}
// TODO Auto-generated method stub
super.onBackPressed();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
mGameView = (GameView) findViewById(GameView.countmaze);
然后进入菜单类
public class menu extends Activity implements OnClickListener {
static int nextmaze;
int countmaze = 0;
GameView gameView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnplay = (Button) findViewById(R.id.btnPlay);
btnplay.setOnClickListener(this);
}
@Override
public void onBackPressed() {
//I have here an AlertDialog builder
}
@Override
public void onClick(View v) {
case R.id.btnPlay:
Toast.makeText(getApplicationContext(), "LEVEL 1",
Toast.LENGTH_SHORT).show();
startnextmaze();
}
}
void startnextmaze() {
Random rand = new Random();
Intent game = new Intent(menu.this, Game.class);
nextmaze = rand.nextInt(5) + 1;
Maze maze = MazeCreator.getMaze(nextmaze);
game.putExtra("maze", maze);
startActivity(game);
}
然后在我的 GameView 类
public class GameView extends View {
static int countmaze;
//Big codes here......
public boolean interceptBackPressed() {
// TODO Auto-generated method stub
countmaze = 0;
return true;
}
}
【问题讨论】:
-
如果你告诉你到目前为止你做了什么以及你想要实现什么,那么建议好的方法会更容易。
-
如果您发布代码并展示 Activity 是如何与 GameView 集成的,那么给您准确的答案会容易得多。
-
@Loop 先生,我想我不能谈论我的声誉得分。如果您不介意我们可以继续在 Facebook 上聊天吗?我非常需要你的帮助。提前致谢 ! (facebook.com/j0naldCruz)
-
我没有 Facebook 帐户。我已经用额外的评论更新了我的答案。没有比这更简单的了。
-
在 mGameView = (GameView)fVBID(R.id.gameview) 上仍然有问题,因为 gameview 不存在并且我的 GameView 类上没有 xml 布局。