Однажды у меня была похожая проблема. Я использовал showDialog (int id, Bundle args) и реализовал
protected Dialog onCreateDialog(int id,Bundle args)
{
switch(id)
{
case ...:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setPositive...
return builder.create();
}
}
Моя ошибка заключалась в том, что мне пришлось использовать removeDialog (int id) перед созданием нового диалога, поскольку Android каким-то образом кэширует его и не вызывает onCreateDialog () каждый раз, когда вы вызываете showDialog ().
Поэтому мое решение называлось
removeDialog(id);
showDialog(id,args);
и изменив onCreateDialog (), удалив все возможные диалоги перед оператором-переключателем, чтобы избежать конфликтов с любым другим кэшированным диалогом.