我正在搜索解决方案,如何获取按下的按钮的值。
当我尝试这样的事情时:
@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();
}
转换中的两个案例都很糟糕。
我仍然无法获得按下按钮的价值......你能解决这个问题吗?
谢谢。
答案 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
似乎也希望numb1
在onCreate
之外宣布。那么,onCreate
应该只为numb1
分配一个值,而不是声明它吗?
无论如何,如果你要发布一个更完整的代码示例,它可能有助于其他人识别问题,而不仅仅是猜测事情是什么。