2017-07-20 50 views
1

我有一個小遊戲,在一個屏幕上,您可以選擇一個項目,然後返回到您離開的主遊戲活動以及該項目將會被使用。因此,要知道用戶選擇什麼項目,我必須將數據傳遞給主遊戲活動。 我做了一些研究,並與代碼中發現:如何返回到已經打開的活動而不重新啓動它並仍然通過數據

Item = new Intent(Inventory.this, MainGame.class);//data sent to MainGame activity 
Item.putExtra(tools, itemUsed); 
Item.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 
startActivity(Item); 

這打開了走出遊戲活動重新啓動它,但它似乎沒有任何數據傳遞到活動。我做錯了什麼,或者有更好的方法去做這件事嗎?

回答

0

這正是startActivityForResult()的用途。在MainGame,當您勞克的Activity選擇項目,像這樣做:

public static final int REQUEST_CODE_CHOOSE_ITEM = 100; 

Intent intent = new Intent(this, ChooseItemActivity.class); 
sartActivityForResult(intent, REQUEST_CODE_CHOOSE_ITEM); 

然後,在MainGame,覆蓋onActivityResult()這樣的:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
     case REQUEST_CODE_CHOOSE_ITEM: 
      if (resultCode == RESULT_OK) 
       // Get the data from the returned Intent 
       Item item = data.getStringExtra("tools"); // or 

什麼... }其他{ //選擇該商品時出現錯誤,或者用戶 //未選擇任何東西而按BACK返回 } } }

ChooseItemActivity

,當你想回到MainGame與所選擇的項目,這樣做:

itemIntent = new Intent(); // Intent to return to MainGame 
itemIntent.putExtra("tools", itemUsed); // Add item as extra 
setResult(RESULT_OK, itemIntent); 
finish(); 
+1

非常感謝你這個完美! –

相關問題