Alert Builder вызывается только впервые?

1

Я применил следующую функцию, которая будет использоваться с showDialog() и onDialogCreate(), но я бы хотел, чтобы этот метод вызывался каждый раз, потому что он вычисляет текст текстового вида каждый раз, когда отображается диалог.

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;
}

Может ли кто-нибудь помочь?

Теги:

1 ответ

1
Лучший ответ

Действия будут вызывать один раз только для вызова CreateCalateDialog и сохранять ссылки на каждое диалоговое окно. Если вы хотите обновить диалог, вы можете переопределить onPrepareDialog (int id, диалог Dialog), который вызывается каждый раз, когда вызывается showDialog.

Итак, для вашего примера выше, где вы обновляете 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 в переменной-члене, чтобы вы не создавали экземпляр нового объекта каждый раз, когда отображается диалог.

  • 0
    Отлично; Спасибо! А что касается переменной-члена, спасибо за подсказку, но она уже есть в моем списке задач. Я просто хотел, чтобы диалоговое окно показывало правильную информацию. :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню