簡體   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