Android 警报生成器仅在第一次调用?
我已经实现了以下用于showDialog()和onDialogCreate()的函数,但我希望每次都调用该方法,因为它在每次显示对话框时都会计算文本视图的文本Android 警报生成器仅在第一次调用?,android,Android,我已经实现了以下用于showDialog()和onDialogCreate()的函数,但我希望每次都调用该方法,因为它在每次显示对话框时都会计算文本视图的文本 private AlertDialog overallScoreDialog(){ AlertDialog.Builder alert = new AlertDialog.Builder(this); Context mContext = getApplicationContext(); LayoutInflate
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;
}
有人能帮忙吗?活动将只调用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保留在一个成员变量中,这样您就不会每次显示对话框时都实例化一个新对象。活动只调用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保存在一个成员变量中,这样就不会每次显示对话框时都实例化一个新对象。Perfect;谢谢至于成员变量,谢谢你的提示,但它已经在我的待办事项列表中了。我只是想让对话框显示正确的信息。:-)完美的谢谢至于成员变量,谢谢你的提示,但它已经在我的待办事项列表中了。我只是想让对话框显示正确的信息。:-)