0

データベースを作成する必要のあるアプリケーションがありますが、それが失敗した場合は、先に進む意味がありません。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();
4

3 に答える 3

0

どのフローを使用するかわかりませんが、このようにできることを提案してください。

Uはこのようにデータベース操作を開始できます..

Intent i = new Intent(this,Databaseoperation.class); 開始アクティビティ (i); ................................これにより、コントロールがデータベース操作クラスに移動し、open.close、insert などのさまざまな操作が実行されます。削除...など

ビルドされたクラスで databasehelper を拡張できます

そして今、データベースやその他のものを開く際に問題が発生した場合、finish() の意図があり、メインのアクティビティに戻ります...

このように作ることができます..

ありがとう

于 2010-09-02T05:07:48.053 に答える
0

私は通常、次のようなことをします:

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

}
于 2010-09-02T16:21:50.967 に答える