Android : AlertDialog에 텍스트를 변경할 수 없습니다.
문제
성공할 때 사용자에게 다음 단계 도전을 보여주기 위해 AlertDialog를 만들었습니다. 따라서 해당 코드는 다음과 같습니다. 게임이 성공하면 showdialog (r.id.display_success)이 호출되고 다음 코드가 실행됩니다.
따라서 모든 통화 에서이 코드를 실행할 것으로 기대합니다. 하지만; 게임은 한 번만 실행하고 다른 모든 실행에서 동일한 경고를 표시합니다. 첫 번째 인스턴스가 생성 된 후에는 인스턴스가 생성되지 않고 첫 번째 인스턴스가 항상 사용됩니다.
case R.id.display_success:
updateGameSettings();
message = formatLevel()
+ formatMission();
return new AlertDialog.Builder(this)
.setIcon(R.drawable.smiley_happy)
.setTitle(R.string.dialog_success)
.setMessage(message)
.setPositiveButton(R.string.alert_dialog_newgame, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
startANewGame();
}
})
.setNegativeButton(R.string.exit, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
finish();
}
})
.create();
해결책 2
대화 상자가 표시되면 onpreparedialog 메소드가 호출됩니다. 따라서이 방법을 재정의하여 텍스트 나 다른 기능을 변경하는 것이 좋습니다.
다른 팁
onpreparedialog의 일관되지 않은 행동에 대한 수정이 있다고 생각합니다. 처음에 대화 상자를 만들 때 (여전히 AlertDialog.Builder 일 때) 메시지를 초기 상태 (NULL 아님)로 설정해야합니다. 따라서 대화 상자를 만들 때 메시지에 항상 널 값이 아닌 값을 갖도록 이와 같은 작업을 수행하십시오. 나는 이것으로 며칠 동안 어려움을 겪고 우연히이 솔루션을 발견했습니다.
AlertDialog.Builder resultAlert = new AlertDialog.Builder(context);
if ( message == null ) {
resultAlert.setMessage("");
} else {
resultAlert.setMessage(message);
}
제휴하지 않습니다 StackOverflow