我正在开发一款游戏,在我的菜单屏幕上,我有一系列按钮,可以让玩家进入不同级别的游戏。我已经使用putExtra和getIntExtra从菜单活动中获取Int到游戏活动,然后设置游戏级别。
这一切都运行得很好,我遇到的问题是当使用“后退”按钮返回菜单活动时,你必须按两次才能进入菜单而不是一次。如果你点击它一次,它会达到与getIntExtra函数的默认Int相对应的水平。
我不确定为什么会这样做。
任何建议都将受到赞赏。
- 编辑 -
在菜单活动
中 public void onGoToGame1Click(View view) {
Intent getNameScreenIntent = new Intent(this, GameActivity.class);
final int result = 1;
startActivityForResult(getNameScreenIntent, result);
getNameScreenIntent.putExtra( "int", 1);
startActivity(getNameScreenIntent);
}
在游戏活动中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game_layout);
levelTV = (TextView) findViewById(R.id.level);
Intent getNameScreenIntent = getIntent();
level = getNameScreenIntent.getIntExtra("int", 1);
levelTV.setText(" " + level);
}
private void levelUpdate() {
switch (score) {
case 10:
level = 2;
break;
case 20:
level = 3;
break;
case 30:
level = 4;
break;
case 40:
level = 5;
break;
}
答案 0 :(得分:0)
您同时使用startActivityForResult()
和startActivity()
,因此您的活动将启动两次。
第一次没有额外的,第二次有额外的。
你应该选择其中一个。仅当您需要活动在完成时返回结果时才应使用startActivityForResult()
。
旁注: startActivityForResult()
的第二个参数不是结果。这是一个请求代码,允许调用者在收到onActivityResult()
的回调时知道哪个请求得到了回答。
答案 1 :(得分:0)
为什么要使用这一行?
startActivityForResult(getNameScreenIntent, result);
因为你通过使用上面的startActivity()来启动两个活动,你最终得到两个GamingActivities,一个在另一个之上。当您使用后退按钮时,您将关闭上部,应用程序将显示您启动的其他活动。如果要使用Extra,则应仅使用startActivity()。