質問

私は、データベースを作成しなければならないアプリケーションがあり、それが失敗した場合は、その後、何の意味が前進しません。私は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ブロックに委任されていると、あなたのダイアログが表示されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top