我正在尝试制作一个包含4个切换按钮和textview的基本应用程序。这个想法很简单:当按下一个按钮时,textview将显示当前正在按下哪些按钮。这可以包括多个按钮(例如,如果按下例如1,3和4)。这是我为它编写的代码:
TextView按钮;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttons = (TextView)findViewById(R.id.textView1);
}
public void buttonPressed(View v){
boolean check = ((ToggleButton)v).isChecked();
int b1 = 1, b2 = 2, b3 = 3, b4 = 4;
switch(v.getId()){
case R.id.toggleButton1:
if(check){
buttons.setText("Buttons pressed: " + b1);
}
else{
buttons.setText("Buttons pressed:");
}
break;
case R.id.toggleButton2:
if(check){
buttons.setText("Buttons pressed: " + b2);
}
else{
buttons.setText("Buttons pressed:");
}
break;
case R.id.toggleButton3:
if(check){
buttons.setText("Buttons pressed: " + b3);
}
else{
buttons.setText("Buttons pressed:");
}
break;
case R.id.toggleButton4:
if(check){
buttons.setText("Buttons pressed: " + b4);
}
else{
buttons.setText("Buttons pressed:");
}
break;
default:
break;
}
}
不幸的是,每次运行此程序时,textview都会被覆盖,我无法确认是否按下了多个按钮。欢迎提出所有建议。
答案 0 :(得分:1)
如果您希望textview始终显示ON按钮的数量,我认为您可以这样做:
保留按钮的曲目
private ToggleButton[] btns = new ToggleButton[4];
在onCreate()中:
btn[0] = (ToggleButton)findViewById(R.id.toggleButton1);
btn[1] = (ToggleButton)findViewById(R.id.toggleButton2);
btn[2] = (ToggleButton)findViewById(R.id.toggleButton3);
btn[3] = (ToggleButton)findViewById(R.id.toggleButton4);
然后在你的buttonPressed处理程序中:
String text = "Buttons pressed: ";
for (int i = 0; i < 4; i++) {
if (btn[i].isCheck()) {
text += (i + 1) + ", ";
}
}
buttons.setText(text);
答案 1 :(得分:0)
如果您不想覆盖已存在的文本,则需要使用append()。像
这样的东西public void buttonPressed(View v){
boolean check = ((ToggleButton)v).isChecked();
int b1 = 1, b2 = 2, b3 = 3, b4 = 4;
switch(v.getId()){
case R.id.toggleButton1:
if(check){
buttons.append("" + b1);
}
else{
buttons.setText("Buttons pressed:");
}
break;
您可以在buttons.setText("Buttons pressed");
中使用onCreate()
一次,然后将所有内容附加到其中。