检测后退键'从排行榜内按? (机器人)

时间:2014-06-12 23:52:17

标签: android google-play-services leaderboard activity-lifecycle

我在Android游戏中设置了排行榜,但它似乎运行良好。

在主菜单中,玩家可以按“显示分数”。按钮只是查看排行榜,当玩家的游戏结束时(通过失去一生或完成游戏),他们可以选择提交他们的分数。如果按此按钮,则会提交分数并显示排行榜以显示新分数。

我设置了我的应用程序,以便在暂时中断时返回当前场景(菜单,游戏等)。

然而,我无法弄清楚如何知道'如果当前正在向用户显示排行榜。 (好吧,我确实知道如何设置这个,而不是我知道如何在退出排行榜时取消它)

我有一个变量设置,用于确定我的应用在onSignedInSucceded()'像这样调用:

@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;}
}

然而,会发生的是,让我们说用户按下了“显示分数”。按钮,我们将signInAction设置为SHOW_LEADERBOARD然后连接。显示排行榜。

用户然后按后退键并返回到应用程序。如果应用程序现在被中断,则调用onSignInSucceded()并再次显示排行榜。 (但是当应用程序被中断时它没有被显示,因此这会降低用户体验。)

当用户按下'后退时,它会很棒。退出排行榜的关键,我可以将signInAction设置回' No_Action' - 我怎么能这样做?

仅仅是为了获取更多信息,我的应用程序是一个单独的活动,并使用自定义场景管理器,所以在我的Activity类中,我可以在后面按下这样做:

If (CurrentScene = mainMenu){
    //Do Something Here
}

但是,排行榜不是自定义场景。所以我不确定该怎么做。

我想这个问题可能最好总结为'如何从Google Play排行榜中检测到后退键? (当用户将其退回应用程序时)' - 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您应该能够使用onActivityResult()来清除signInAction。您需要根据应用程序检查请求代码和结果代码。

一些可能的结果将是:

  • Activity.RESULT_CANCELED(这是您感兴趣的那个)

  • GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED

但你可能最好以同样的方式处理它们。

@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);
    }