2012-07-05 68 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