[英]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.