2016-11-01 30 views
0

在Android中,我正在製作一個簡單的遊戲。這個遊戲基本上由小遊戲組成。每個迷你遊戲,我已經創建爲一個活動。我們稱他們爲ActivityA ActivityB和ActivityC。Android:在一個活動中傾聽活動結果

我想在這些活動的完成任何「廣播」(我使用這個詞非常鬆散)。當用戶擊敗迷你遊戲時,1被「廣播」,當他們輸掉時,可能是-1。

我需要一些東西來聽這些「廣播」並記錄分數,以便知道何時結束遊戲。

跟蹤這些的最佳方式是什麼?我應該從哪裏開始? 就我個人而言,我希望主菜單和遊戲屏幕之間會有一個無形的活動(或者服務),它可以完成所有的控制(計數分數,告訴應用程序啓動哪些活動等)。

謝謝!

回答

2

您可能想了解一下startActivityForResult

快速瀏覽
您也可以啓動另一個活動,back.Then您的MainActivity接收它在onActivityResult()回調收到一個結果。

在你的「MainActivity」你有這樣的事情:
你設置的意圖爲新的類,然後調用startActivityForResult了一個獨特的代碼,以識別啓動的活動)

private void startActivityA() { 
    Intent intent = new Intent(this, ActivityA.class); 
    startActivityForResult(intent, ACTIVITY_A_CODE); 
} 

private void startActivityB() { 
    Intent intent = new Intent(this, ActivityB.class); 
    startActivityForResult(intent, ACTIVITY_B_CODE); 
} 

private void startActivityC() { 
    Intent intent = new Intent(this, ActivityC.class); 
    startActivityForResult(intent, ACTIVITY_C_CODE); 
} 

然後在你的MainActivity中實現onActivityResult方法,類似下面的類似你將檢查什麼活動已經開始(* _CODE),然後檢查結果是否正確。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Check which request we're responding to 
    if (requestCode == ACTIVITY_A_CODE) { 
     // if the result of the activity was good, then: 
     if (resultCode == RESULT_OK) { 
      // score++; 
     } else { 
      // score--; 
     } 
    } 
    else if (requestCode == ACTIVITY_B_CODE) { 
     // .... 
    } 

} 


在新的活動,你必須設置的結果,根據您的審覈規定,與setResult()


請從Android文檔閱讀有關更詳細startActivityForResult

+0

所以基本上是一個虛擬活動。這幾乎是我的想法。我只是想在我花費太多時間之前進行確認。 感謝您的回答! –

1

如果我們認爲您有MainActivity,ActivityA和ActivityB:

1在ActivityA可以保存結果數據DB和回MainActivity和處理結果。但檢查Android活動生命週期之前https://developer.android.com/training/basics/activity-lifecycle/index.html

2在android中,您可以直接返回數據。檢查Android return data to previous activity

在我看來,第一種方式更好。因爲它有更多的機會。您可以在任何情況下保存所有類型的數據。 (OnClose)

相關問題