有没有办法告诉按下什么按钮来调出警告对话框?

时间:2014-12-07 07:47:06

标签: android button alertdialog

按下按钮时会弹出一个警告对话框。问题是我需要知道按下了什么按钮来显示此警报,因为它的文本是我调用数据库所需的数字。

基本上我需要知道是否有办法将按钮作为参数传递以显示警告对话框(如果可能)或任何其他更简单的方法来获取按下的按钮上的文本警惕说。

按钮以p1,p2,p3等方式命名为玩家1,玩家2,玩家3等

这些按钮中有21个能够在一个地方处理所有按钮,这使得代码更易于管理

这里的增量只是用于更新文本视图的变量

我的提醒代码:

final AlertDialog.Builder popit = new AlertDialog.Builder(this);
    popit.setMessage("Shot, Assist or Goal?");
    popit.setPositiveButton("Shot", new DialogInterface.OnClickListener() {         
        @Override
        public void onClick(DialogInterface dialog, int which) {
            homeshots++;
            hshot.setText("S: " + homeshots);
            //dbcallhere                
        }
    });
    popit.setNegativeButton("Goal", new DialogInterface.OnClickListener() {         
        @Override
        public void onClick(DialogInterface dialog, int which) {
            homegoals++;
            homeshots++;
            hgoal.setText("G: " + homegoals);
            hshot.setText("S: " + homeshots);
            //dbcall here           
        }
    });
    popit.setNeutralButton("Assist", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //dbcall 
        }
    });

感谢所有提前阅读此内容的人。

3 个答案:

答案 0 :(得分:1)

public void onClick(View v) {
switch(v.getId())
{
case R.id.button_a_id:
// handle button A click;
break;
case R.id.button_b_id:
// handle button B click;
break;
default:
throw new RuntimeException("Unknow button ID");
}

这确保您不会错过处理任何按钮点击。

答案 1 :(得分:0)

我猜你有多个按钮可以打开你的对话框。在这种情况下,您应该能够知道在您将onclick侦听器添加到打开对话框的按钮的位置按下了哪个按钮。

有了这些知识,您可以在警报构建器代码的相同范围内设置最终字段。您可以阅读DialogInterface.OnClickListener中的最后一个字段,然后就完成了。

答案 2 :(得分:0)

知道这一点非常简单。

  1. 如果你的按钮是xml,设置属性android:settag =""
  2. 如果您的按钮是以编程方式生成的,那么请调用yourButton.setTag((String)" someId");
  3. 要知道点击了哪个按钮

    yourButton.setClickListener(本);

  4. 然后

    @Override
    
    public void onClick(View v) {
       switch(v.getid){
         case R.id.button1:
            return myTag(v);
         break;
       }
    }
    
    public String myTag(View v){
       return (String)((Button)v).getTag();
    }