2012-07-05 97 views
0

我有一個遊戲,用戶在畫布上來回移動,可與項目在這種情況下相互作用,觸發戰鬥狗的點擊。Android的 - 問題與對話框/按鈕

這加載了一個對話框,讓用戶打或者逃跑的選項。用戶點擊戰鬥,然後彈出另一個對話框,這將顯示一些文本(您的詳細信息和狗的詳細信息),並在該文本下方有一個攻擊按鈕。

當你點擊連接按鈕幾件事情發生(不relvent),這實質上意味着用戶和狗的細節變化(例如DogHP下降到18)。

所以我的問題是:

  • 我加載了動態信息「狗惠普的第一個對話框。攻擊鍵點擊
  • 後,這些信息會改變。
  • 因此,我需要使用builder.setMessage()
  • (例如,)將當前顯示的新信息更新爲第一個對話框。原單HP = 20 ...攻擊鍵點擊...新的HP = 10

請看到一些代碼片斷如下,任何意見或指導做好將不勝感激:

代碼段:

void Fight() 
{ 
    final int DogHP = 25; 
    final int DogAtk = 15; 
    final int DogDef = 5; 
    final int DogSpeed = 20; 

    AlertDialog.Builder builder = new AlertDialog.Builder(context); 
    builder.setTitle(context.getText(R.string.monster_dog_title)); 
    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = inflater.inflate(R.layout.fight, null); 
    builder.setView(view); 
    final AlertDialog DogBattle = builder.create(); 

    View FightBtn = view.findViewById(R.id.dog_fight); 
    FightBtn.setOnClickListener(new OnClickListener() 
    { 
     boolean attacked = false; 
     @Override 
     public void onClick(View clicked) 
     { 
      if(clicked.getId() == R.id.dog_fight) 
      { 
       AlertDialog.Builder builder = new AlertDialog.Builder(context); 
       builder.setTitle(context.getText(R.string.monster_fight)); 
       builder.setMessage("Your Current Battle Details:\n" + "HP = " + UserHP + " Def = " + UserDef + " Atk = " + UserAtk + "\n\n" + "Your Enemy:\n" + "HP = " + DogHP + " Def = " + DogDef + " Atk = " + DogAtk); 

       LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       View view = inflater.inflate(R.layout.monsterbattle, null); 
       builder.setView(view); 
       final AlertDialog BattleRun = builder.create(); 
       BattleRun.show(); 
       View LeaveBattle = view.findViewById(R.id.Attack); 
       LeaveBattle.setOnClickListener(new OnClickListener() 
       { 
        @Override 
        public void onClick(View clicked) 
        { 
         if(clicked.getId() == R.id.Attack) 
         { 
          // SOME CODE GOES HERE 
         } 
        } 
       }); 
      } 
     } 
    }); 
} 

在此先感謝您的幫助。

+0

你的問題是? – 2012-07-05 16:10:43

+0

基本上,點擊攻擊按鈕後,我加載的第一個對話框中有動態信息'Dog HP',然後該信息被更改。因此,我需要更新與我目前使用builder.setMessage() – 2012-07-05 16:15:59

回答

0

我決定完全地放棄上述想法,因爲它是在對話框中過多的發生,並結束了與使用對象而不是變量一起創建一個新類。

0

我沒有試過,但我相信,文本字段的對話框中的ID是android.R.id.custom,所以你應該能夠做這樣的事情:

((TextView)dialog.findViewById(android.R.id.custom)).setText(newTextToShow) 

不過,更好的方法可能是使用自定義對話框。

+0

我是新來的Java兩者/ Android開發顯示新信息的第一個對話框,因此將不勝感激,如果你能給我一個教程看看或更多的代碼片段工作。謝謝 – 2012-07-05 18:11:04