繁体   English   中英

如何从特定片段的活动中禁用 onDestroy 方法?

[英]How to disable an onDestroy method from activity in a specific fragment?

我有一个包含多个片段的活动。 当用户到达最后一个片段并单击按钮时,他会通过意图进入 MainActivity。 这是一个多人问答应用程序,我需要更新数据库中的“回合”字段,该字段决定玩家 1 或 2 是否必须玩。 此字段当前在以下时间更新...

...玩家正常完成他的测验回合(通过单击最后一个片段上的下一个按钮)

...玩家在游戏过程中点击手机的后退按钮(它会打开一个AlertDialog ,因此当玩家选择返回 MainActivity 时会触发“更新转场方法”)

必须有第三个选项来更新转场,这是场景:玩家开始他的回合,但在他的回合期间关闭应用程序。 这意味着目前我的数据库中的“转弯”字段没有得到更新,这意味着在我的代码中两个玩家都不能继续游戏。 我想通过在用户决定关闭应用程序时更新转向字段来避免这种情况。

在片段中有一个ProgressBar ,当用户意外关闭应用程序时它仍在运行,我在片段的onStop方法中这样做了。 因此我无法在活动中调用onStop方法来更新数据库中的字段,所以我想知道是否有一种方法可以在不调用 onStop 方法的情况下实现我想要的结果。

这是我的活动,我目前有在 onDestroy 方法内更新 Firestore 中某些字段的方法:

...
// When the user clicks the phones back button during the game an alert window opens to aks if he is sure to exit the game
    public void onBackPressed() {
        AlertDialog();
    }

public void AlertDialog() {

        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                closeGame();
                Intent i = new Intent(GameActivity.this, MainActivity.class);
                startActivity(i);
                finish();
            }
        });
    }

 @Override
    protected void onDestroy() {
        super.onDestroy();
        updateGameStatus();
    }

    protected void updateGameStatus() {

collectionRef.document(gameId).collection("Round").document("Round").update("round", roundValue + 1)
                            .addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                }
                            });

        }
...

有什么好的方法可以达到我想要的结果吗?

如果您需要其他信息,请告诉我。

我非常感谢任何提示!

由于无法禁用特定 Fragment 上的 onDestroy,因此我围绕保存 Fragment 的 Activity 的onDestroy方法安排了我的代码逻辑。

我有一个包含多个片段的活动。 当用户到达最后一个片段并点击一个按钮时,他通过意图进入 MainActivity。 这是一个多人测验应用程序,我需要更新数据库中的“回合”字段,该字段决定玩家 1 还是 2 必须玩。 此字段当前会在...

...玩家正常完成他的测验回合(通过单击最后一个片段上的下一个按钮)

...玩家在游戏过程中点击手机的后退按钮(它会打开一个AlertDialog所以当玩家选择返回 MainActivity 时,这会触发“更新回合方法”)

必须有第三个选项来更新回合字段,这就是场景:玩家开始他的回合,但在他的回合中关闭应用程序。 这意味着目前我的数据库中的“turn”字段没有更新,这意味着在我的代码中,两个玩家都不能恢复游戏。 我想通过在用户决定关闭应用程序时更新转弯字段来避免这种情况。

在片段中有一个ProgressBar当用户不小心关闭应用程序时它仍在运行,我在片段的onStop方法中做到了这一点。 因此我无法在活动中调用onStop方法来更新数据库中的字段,所以我想知道是否有一种方法可以在不调用 onStop 方法的情况下实现我想要的结果。

这是我的活动,我目前拥有在 onDestroy 方法中更新 Firestore 中某些字段的方法:

...
// When the user clicks the phones back button during the game an alert window opens to aks if he is sure to exit the game
    public void onBackPressed() {
        AlertDialog();
    }

public void AlertDialog() {

        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                closeGame();
                Intent i = new Intent(GameActivity.this, MainActivity.class);
                startActivity(i);
                finish();
            }
        });
    }

 @Override
    protected void onDestroy() {
        super.onDestroy();
        updateGameStatus();
    }

    protected void updateGameStatus() {

collectionRef.document(gameId).collection("Round").document("Round").update("round", roundValue + 1)
                            .addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                }
                            });

        }
...

有什么好的方法可以达到我想要的结果吗?

如果您需要其他信息,请告诉我。

我非常感谢任何提示!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM