J'ai une application qui doit créer une base de données et si cela échoue, alors pas de sens aller de l'avant. J'ai construit un AlertDialog et show()
, mais il ne s'affiche jamais. La logique passe à travers, puis barfs à cause de la base de données manquante.Quel est le meilleur moyen d'arrêter une activité et d'alerter l'utilisateur?
Quelle est la bonne/meilleure façon de lancer un message et d'interrompre l'activité? Le code ci-dessous s'exécute bien (ce qui signifie que le show()
se produit pendant le débogage et qu'il tombe à la ligne suivante), mais l'interface utilisateur n'affiche jamais cette alerte. BTW - Je me rends compte que le lancer n'est peut-être pas le plus gracieux mais je n'obtiens même pas si loin ... B ^).
try {
myDBHelp.createDataBase();
} catch (IOException ioe) {
new AlertDialog.Builder(this).setCancelable(false)
.setMessage(ioe.getMessage())
.setTitle("Database Create Failed")
.setPositiveButton("Quit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
throw new Error("Unable to create database - please try uninstall/reinstall");
}
})
.show();
L'utilisation d'un toast est certainement valable mais je me demande si j'aurais eu le même problème. Le problème est que l'interface utilisateur ne montrait pas mon dialogue avant qu'il ait vomi. Il s'avère que le paramètre override onResume() s'exécutait AVANT que la boîte de dialogue ne s'affiche et échouait, car le code attendait une base de données. J'ai dû mettre dans un booléen et tester/exécuter seulement ce code dépendant si aucune erreur antérieure. Une fois onResume() terminé, la boîte de dialogue s'affiche. Je suis sûr que Toast fonctionnera une fois que j'ai protégé le code onResume(). Merci. – teachableMe