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 來增加或減少 中的值。
添加回答
舉報