活動を停止し、ユーザーに警告するための最良の方法は何ですか?
-
26-09-2019 - |
質問
私は、データベースを作成しなければならないアプリケーションがあり、それが失敗した場合は、その後、何の意味が前進しません。私はAlertDialogを構築し、それをshow()
が、それは決して表示されました。ロジックが通って落下し、その後ために不足しているデータベースのbarfsます。
メッセージを投げるし、活動を停止する権利/最良の方法は何ですか?実行の罰金以下のコード(デバッグ中show()
を意味するが発生し、それが次の行に落ちる)が、UIは、このアラートを表示することはありません。ところで - 私は投げが一番優雅ではないかもしれません実現が、私もそこまでそう... 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();
解決
私は通常、このような何かを
void myFunction() {
try {
somecode..
} catch (IOException e){
e.printStackTrace();
doToast("Unknown Error"); //Display Toast to user
return; //Leave myFunction
}
somecode... //If no error continue here
return;
}
protected void doToast(final String str) {
this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(myClass.this, str, Toast.LENGTH_SHORT).show();
}
});
}
他のヒント
私はuが提案を持っているuse.But流れかわかりません Uはこのようにそれを行うことができます。
Uはこのようなデータベース操作を開始することができます..
テントI =新しいテント(これ、Databaseoperation.class)。 startactivity(I); ............................... これはdatabaseoperationクラスに移動するためのコントロールを行います それはopen.close、インサートdelete..etcような様々な動作を行う。
Uが構築されたクラスでdatabasehelper拡張することができます。
となりましたときに開くデータベースまたは任意のもののいずれかの問題が、 仕上げ()の意図と主な活動に戻って...
Uこのようにそれを行うことができます..
おかげラケッシュ
んがエラーを投げたり、それ自体を扱うcreateDataBase()
?それは例外自体を処理する場合、それはあなたの外側のブロックに到達したことがないので、あなたは、catchブロックを通過することはありません。このようなメソッドのシグネチャの最後に追加throws IOException
を持っていることを確認します:
public void createDataBase() throws IOException {[...]}
また、createDataBase()
の確認にはIOExceptionの の内部を引くどんなのtry / catchブロックを持っていてくださいます。
IOException
が発生するたびに、その方法は、それはあなたの外側のcatchブロックに委任されていると、あなたのダイアログが表示されます。