2012-04-18 78 views
1

我正在開發一款小遊戲並且遇到一些問題。surfaceview,activity,startactivityforresult,activity in activity

是菜單

public void onClick(View arg0) { 
    // TODO Auto-generated method stub 
    switch (arg0.getId()){ 
    case R.id.bStartGame: 

     Intent a = new Intent(Menu.this, Action.class); 
     startActivityForResult(a, 1); 

     break; } 

然後開始surfaceview

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(new GameView(this)); 
} 

的活動,然後將surfaceView與遊戲機制。

我的大部分代碼都在這個視圖中。

現在我有問題找到gameoverscreen的一個很好的解決方案。

如果我在surfaceview裏面開始一個新的活動,它可以工作 - 但我沒有得到結果(),這是在會話期間達到的分數。

所以現在我想問你們如何解決這個問題。

我想到了一種方式,但不知道如何實現它。 這將是從surfaceview傳遞到活動的高分,並將其設置爲一個結果(菜單活動返回)。 通過對話框啓動一個xml文件,這將是遊戲屏幕,一旦玩家觸摸後退按鈕,他會回到菜單,在那裏他可以看到他的成績。

你能告訴我如何編碼嗎?

親切的問候 丹尼斯

回答

0

有多種方式來解決這個問題:

次使用startActivityForResult,然後將其發回從您的新活動,使用onActivityResult在老年活動捕捉它(檢查https://developer.android.com/reference/android/app/Activity.html

- 做我所做的(懶惰,哈克的方式:):用startActivity()開始新的活動,並添加高分作爲額外的數據添加到意圖。在你的新活動中,使用getIntent()。getInt(ow whatever)來獲得發送的分數數據,並用它來做它。然後關閉那個活動,你會返回到前一個持有你的SurfaceView。

現在的技巧:在開始新的活動之前,將其分數添加到意圖中,只需在Surfaceview的活動中執行與在新活動中相同的分數計算!這樣,當你返回到SurfaceView的活動時,你仍然會得到正確的新分數(如果存儲/恢復正確;不要忘記將它添加到保存/恢復狀態和/或Surfaceview的私有變量中) !

唯一的缺點是,你將有兩個位置,你必須更新你的得分機制。這不是很好的編程。但它的工作原理很簡單。

+0

運行相同的計算不是必要的不良風格,但代碼重複是!找到另一個源組織... – Bondax 2012-04-26 12:24:07

+0

謝謝,putExtra()方法是我用的:) – 2012-07-24 22:07:26