2012-04-18 39 views
1

小さなゲームといくつかの問題があります。表面ビュー、アクティビティ、開始アクティビティ、アクティビティのダイアログ

メニュー

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をsurfaceview

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

を開始し、その後、アクティビティがあります。

ほとんどのコードはこのビューにあります。

今、私はgameoverscreenのための良い解決策を見つけるために問題があります。

サーフェイスビュー内で新しいアクティビティを開始すると、動作しますが、セッション中に達成されたスコアである結果()は表示されません。

だから私は皆さんにこの問題の解決方法を尋ねたいと思っていました。

私は方法を考えましたが、実装方法はわかりません。 サーフェスビューからハイスコアをアクティビティに渡し、その結果(メニューアクティビティが戻ってくる)として設定します。 そして、gameoverscreenとなるダイアログを介してxmlファイルを開始し、プレーヤーが戻るボタンに触れるとすぐに彼は得点を見ることができるメニューに戻ります。

これをコード化する方法を教えていただけますか?

種類は、この解決するために、いくつかの方法があります デニス

答えて

0

について:startActivityForResult -use

をして、onActivityResult使用して、古い活動でそれをキャッチ、あなたの新しい活動から戻ってそれを送信するには(https://developer.android.com/reference/android/app/Activity.htmlをご確認ください)

-do私は(怠惰な、ハッピーな方法:):startActivity()で新しいアクティビティを開始し、インテントに追加された余分なデータとしてハイスコアを追加します。あなたの新しいアクティビティでは、getIntent()。getInt(ow whatever)を使用して、送信されたスコアデータを取得し、それを使用して実行します。その後、その活動を閉じて、あなたの表面ビューを保持する前のものに戻ります。

今、トリック:あなたのスコアがインテントに追加された新しいアクティビティを開始する前に、あなたの新しいアクティビティと同じように、あなたのサーフェイスのアクティビティで同じスコア計算を実行してください!そうすることで、あなたがあなたのサーフェイスの活動に戻ったときに、あなたは正しい/新しいスコアを残すことができます(保存された/ onresumeされた場合、あなたの保存/復元状態に/ /またはsurfaceviewのプライベート変数を追加することを忘れないでください) !

唯一の欠点は、スコアリングの仕組みを更新する必要がある2つの場所があることです。そしてそれは良いプログラミングではありません。しかし、それは動作し、それは簡単です。

+0

同じ計算を実行する必要はありませんが、悪いスタイルですが、コードの重複はありません。別のソース組織を探してください... – Bondax

+0

ありがとう、putExtra()メソッドは私が使ったものです:) –

関連する問題