如何获得按下按钮的值?

时间:2011-04-13 22:12:12

标签: android button

我正在搜索解决方案,如何获取按下的按钮的值。

当我尝试这样的事情时:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button numb1 = ((Button)this.findViewById(R.id.numb1)); 
    numb1.setOnClickListener(this);
}

public void onClickHandler(View v){
    String pressed = null;

    switch (v.getId()) {
        case R.id.numb1: 
            pressed=numb1.getText().toString();
            break;
            //OR
        case R.id.numb1: 
            pressed=R.id.numb1.getText().toString();
            break;  
     }

    new AlertDialog.Builder(this).setTitle("Info").setMessage(pressed).setNeutralButton("Okey", null).show();       
}

转换中的两个案例都很糟糕。

我仍然无法获得按下按钮的价值......你能解决这个问题吗?

谢谢。

4 个答案:

答案 0 :(得分:4)

pressed=((Button)v).getText();应该完成这项工作。

此外,让您的活动实现View.OnClickListener而不是onClickHandler()会覆盖您的实现方法public void onClickHandler(View v)

答案 1 :(得分:4)

好吧,伙计们,我在这方面很新,但我解决了这个问题:

public void onClick(View view) {
      int intID = view.getId();
      Button button = (Button) findViewById(intID);
      String message = button.getText().toString();
}

答案 2 :(得分:0)

试试这个。

Button sender = (Button)v;
sender.text;

答案 3 :(得分:0)

查看您的代码,您是否可能有两个名称相同但范围不同的变量会导致混淆?

onCreate中,您声明Button numb1,但onClickHandler似乎也希望numb1onCreate之外宣布。那么,onCreate应该只为numb1分配一个值,而不是声明它吗?

无论如何,如果你要发布一个更完整的代码示例,它可能有助于其他人识别问题,而不仅仅是猜测事情是什么。