我試圖創建一個用於編輯吉他標籤的應用程序。我有一組代表按鍵的按鈕,我希望能夠點擊按鈕打開一個警報對話框,將該按鈕的文本設置爲輸入的數字。Android編程 - 使用警報對話框以編程方式更改按鈕文本
下面的editFret函數由按鈕通過其onClick屬性調用。當我運行這個時,我可以按下一個按鈕,它會彈出對話框,我可以輸入數字。按下對話框中的確定後,該按鈕變爲空白。當我再次點擊該按鈕或任何其他按鈕時,該數字將顯示爲按鈕中的文本。它還會不斷更改之後點擊的任何按鈕中的文本,而不管最後一個輸入值是什麼。
我試着改變按鈕文本到一個點擊一個常量值,並沒有任何問題,所以我假設問題是與getFret函數,雖然我不可能看到它會是什麼,因爲它只是獲取一個字符串。
//Create string to store the fret number
String fret;
public void getFret(){
//Create text input field
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
input.setFilters(new InputFilter[] {new InputFilter.LengthFilter(2)});
new AlertDialog.Builder(this)
.setTitle("Edit fret")
.setMessage("Input fret number")
.setView(input)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
fret = input.getText().toString();
}
})
.setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Do nothing
}
}).show();
}
public void editFret(View view){
Button button = (Button) view;
getFret();
button.setText(fret);
button.invalidate(); //Don't know if this is necessary
}
其他人發佈了正確的答案,但我也想補充說,你應該使用.setNegativeButton(「Cancel」,null),而不是設置一個onclick監聽器什麼也不做。更容易和高效。 – tash