Android 检测';后退键';从排行榜中按?(安卓)
我在Android游戏中设置了一个排行榜,它似乎运行得很好 在主菜单中,玩家可以按“显示分数”按钮查看排行榜,当玩家的游戏结束时(无论是通过牺牲自己的生命还是完成游戏),玩家可以选择提交分数。如果按此键,则提交分数并显示排行榜以显示新分数 我已经设置了我的应用程序,如果它被暂时中断,它将返回到当前场景(菜单、游戏等) 但是,我不知道如何“知道”排行榜是否正在向用户显示。(我知道如何设置,但不知道退出排行榜时如何“取消设置”) 我设置了一个变量,该变量确定在调用“onSignedSucceed()”时我的应用程序应采取的操作,如下所示:Android 检测';后退键';从排行榜中按?(安卓),android,google-play-services,leaderboard,activity-lifecycle,Android,Google Play Services,Leaderboard,Activity Lifecycle,我在Android游戏中设置了一个排行榜,它似乎运行得很好 在主菜单中,玩家可以按“显示分数”按钮查看排行榜,当玩家的游戏结束时(无论是通过牺牲自己的生命还是完成游戏),玩家可以选择提交分数。如果按此键,则提交分数并显示排行榜以显示新分数 我已经设置了我的应用程序,如果它被暂时中断,它将返回到当前场景(菜单、游戏等) 但是,我不知道如何“知道”排行榜是否正在向用户显示。(我知道如何设置,但不知道退出排行榜时如何“取消设置”) 我设置了一个变量,该变量确定在调用“onSignedSucceed()
@Override
public void onSignInSucceeded() {
//If the flag is set, then display the leaderboard
if (signInAction==SHOW_LEADERBOARD){
displayLeaderBoard();
}
//If the flag is set, then display the submit score
else if (signInAction==SUBMITSCORE){
submitScore();
}
//Otherwise, reset the flag and take no action
else {signInAction=NO_ACTION;}
}
然而,发生的情况是,假设用户按下“显示分数”按钮,我们将登录设置为显示排行榜,然后连接。将显示排行榜
然后用户按下后退键并返回应用程序。如果应用程序现在被中断,将调用OnSignensAccepted(),并再次显示排行榜。(但当应用程序被中断时,它没有被显示,因此这会减少用户体验)
如果用户按下“后退”键退出排行榜,我就可以将签名设置回“不采取行动”——我该怎么做
仅为补充信息,我的应用程序是一个单一的活动,并使用自定义场景管理器,因此在我的活动类中,我可以按back press做一些事情,如:
If (CurrentScene = mainMenu){
//Do Something Here
}
但是,排行榜不是自定义场景。所以我不知道该怎么做
我想这个问题可以最好地概括为“我怎样才能检测到Google Play排行榜上的后退键?”?(当用户退出并返回到应用程序中时)–如果您需要任何帮助,我们将不胜感激。您应该能够使用onActivityResult()清除登录。您需要检查请求代码,可能还需要检查结果代码,具体取决于您的应用程序 一些可能的结果将是:
- Activity.RESULT\u已取消(这是您感兴趣的)
- GamesActivityResultCodes.RESULT\u需要重新连接
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
//just returned from displaying the leaderboard
if(requestCode==REQUEST_LEADERBOARD)
{
signInAction=NO_ACTION;
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
为什么不直接使用
onPause()
和onResume()
?这正是你想要实现的,听起来像是,除非我误解了。嗨@kcopock,你能详细说明一下吗?当我的应用程序运行/恢复时,如果用户已登录Play Services,则会调用OnSignanceEded(),如果SignationAction仍设置为SHOW_Leadboard,则会触发DisplayLeadboard();-所以我需要说“用户已经退出排行榜,所以将Signationation设置为NO_ACTION”,这样就不会发生这种情况-希望这是有意义的:-)我可能误解了你的应用程序的流程。但是,如果你说你需要知道排行榜是否显示,那么无论何时设置该标志(例如signInAction=SHOW_Leadboard),你都可以在活动中的onResume()
中将其清除回NO_ACTION。启动排行榜将暂停您的活动。您可以使用该信息表示,每当您的活动恢复时(onResume()
),您显然不再处于该状态。因此,用户单击“显示排行榜”,您就可以将登录设置为显示排行榜。将调用onPause()。在onResume()中,只需将SignenAction设置为NO_ACTION。是的,但这将意味着重新启动时不会显示排行榜,我需要的是,如果在应用程序暂停时显示排行榜,则排行榜将在恢复时显示。如果应用程序暂停时没有显示,则不显示:-)回答得好@BrianDeWolff-谢谢。我已经实现了它,它工作得很好,我实际上可以简化它,因为我只启动一个活动,我不需要检查请求代码,但我做了,只是为了安全起见-谢谢!!