3 回答

TA贡献1856条经验 获得超17个赞
您正在嵌套侦听器,但该逻辑不能按顺序工作。您应该单独声明您的听众。我建议你创建一个布尔值来保存开关和一个按钮监听器的状态。在侦听器中检查是否启用了开关,然后运行您的计算,如果禁用了开关,请执行相同的操作。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mySwitch.isChecked(){
String text_string = text.getText().toString();
int text_int = Integer.parseInt(text_string);
text_int++;
text.setText(String.valueOf(text_int));
} else {
String text_string = text.getText().toString();
int text_int = Integer.parseInt(text_string);
text_int++;
text.setText(String.valueOf(text_int));
}
}
});

TA贡献1862条经验 获得超6个赞
您的应用程序崩溃是因为您试图将一个 int 设置为 atextview.setText()
并且当您将一个 int 传递给此方法时,它希望它是一个资源 id,并且在您的情况下找不到它,这就是它会抛出ResourceNotFoundException
和崩溃的原因。
您应该如下设置文本:
text.setText(String.valueOf(text_int));

TA贡献1831条经验 获得超10个赞
您不需要监听器Switch,但只需要 1 个监听器Button:
final TextView text = (TextView)findViewById(R.id.textView);
final Button button = (Button)findViewById(R.id.button);
final Switch mySwitch = (Switch)findViewById(R.id.mySwitch);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text_string = text.getText().toString();
int text_int = 0;
try {
text_int = Integer.parseInt(text_string);
} catch (NumberFormatException e) {
e.printStackTrace();
}
if (mySwitch.isChecked())
text_int++;
else
text_int--;
text.setText("" + text_int);
}
});
每次单击 时Button,在其侦听器中,TextView根据是否选中 Switch 来增加或减少 中的值。
添加回答
举报