0

我有带有“新游戏”和“恢复”按钮的 MenuActivity。“新游戏”启动 FireRoomActivity。

public void newGame(View view){
        Intent intent = new Intent(this, FireRoomActivity.class);
        this.finish();  
        startActivity(intent);
    }

在 FireRoomActivity 中,onBackPressed 被覆盖以返回到 MenuActivity。

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent inMain=new Intent(this, MenuActivity.class);
    startActivity(inMain);
}

MenuActivity 中的“恢复”按钮应该恢复 FireRoomActivity。但这只是退出应用程序。

public void resume(View view){
    this.finish();
}

Q1)我做错了什么?

Q2)如果我添加第三个活动“ThreeActivity”并从 FireRoomActivity(finishing FireRoomActivity)启动它,并在这个“ThreeActivity”覆盖 onBackPressed 去 MenuActivity,我会怎么做?

我是android生命周期的新手,所以我会很感激详细的答复

4

5 回答 5

2

1)你在搞乱自然秩序。无需在“新游戏”方法中调用“完成”。

只需将活动留在堆栈上,以便在按返回键时可以返回到它。然后,当按下返回键时,您不需要启动新的活动,因为您已经返回到已经拥有的一个 MenuActivity。

您的 resume 方法正在调用完成并因此关闭菜单。不要“完成”菜单,而是输入您的代码以恢复游戏。

2) 了解活动生命周期。一旦你理解了这一点,你就会更好地处理这个问题。如果您要返回一项活动,则无需在开始另一项活动时完成该活动。把它们想象成一堆。您将活动放在堆栈上,然后返回按钮将它们再次弹出。只有当你完全完成一项活动并且再也不想看到它时,你才会完成它。

于 2013-11-26T06:40:41.527 回答
1
**Try This**
======================
public void onBackPressed() {
Intent i = new Intent(getApplicationContext(), MenuActivity.class);
            i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
            startActivity(i);
            finish();
}
于 2013-11-26T06:33:56.893 回答
0

super.OnBackPressed()在 onBackPressed 重写方法中删除。

如果它不起作用,试试这个:

使用单击恢复按钮的语法启动 FireRoomActivity

Intent i = new Intent(getActivity(), FireRoomActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
startActivity(i);
于 2013-11-26T06:40:16.930 回答
0

尝试:

@Override
public void onBackPressed() {
    Intent inMain=new Intent(this, MenuActivity.class);
    startActivity(inMain);
}  

onBackPressed() 本身完成活动。在这种情况下,如果您在 FireRoomActivity 中按下“返回”按钮,它将始终暂停。因此,如果您想完成它,则需要调用 finish();

于 2013-11-26T06:34:06.967 回答
0

在您的 ThreeActivity 中覆盖它

@Override
public void onBackPressed() {
    Intent intent=new Intent(this, MenuActivity.class);
    startActivity(intent);
}

有关更多信息,请参阅链接

于 2013-11-26T06:48:56.197 回答