我已经实现了以下与 showDialog() 和 onDialogCreate() 一起使用的函数,但我希望每次都调用该方法,因为它会在每次显示对话框时计算 TextView 的文本。
private AlertDialog overallScoreDialog(){
AlertDialog.Builder alert = new AlertDialog.Builder(this);
Context mContext = getApplicationContext();
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.overall_score_dialog,
(ViewGroup) findViewById(R.id.overall_score_dialog_layout_root));
alert.setTitle("Results");
TextView tv = (TextView) layout.findViewById(R.id.overallscoreresults);
ScoreCalculator sc = new ScoreCalculator(this, calculatorVO);
tv.setText(Double.toString(sc.getTotalScore()));
alert.setView(layout);
alert.setPositiveButton(R.string.done, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
return;
}
});
AlertDialog ad = alert.create();
return ad;
}
有人能帮忙吗?
最佳答案
Activity 只会调用一次 onCreateDialog 并保留对每个对话框的引用。如果你想更新一个对话框,你可以覆盖每次调用 showDialog 时调用的 onPrepareDialog(int id, Dialog dialog) 。
因此对于上面的示例,您可以使用分数更新 TextView,您可以执行以下操作:
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
TextView tv = (TextView) dialog.findViewById(R.id.overallscoreresults);
ScoreCalculator sc = new ScoreCalculator(this, calculatorVO);
tv.setText(Double.toString(sc.getTotalScore()));
}
您可能还想将 ScoreCalculator 保留在一个成员变量中,这样您就不会在每次显示对话框时都实例化一个新对象。
关于android - Alert Builder 只在第一次调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672806/