停止活动并提醒用户的最佳方法是什么?

时间:2010-09-02 03:04:53

标签: android terminate alertdialog

我有一个必须创建数据库的应用程序,如果失败了,那么前进就没有意义了。我已经构建了一个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();

3 个答案:

答案 0 :(得分:0)

我不知道你用的是什么流程。但有一个建议 你可以这样做。

你可以像这样启动数据库操作..

Intent i = new Intent(this,Databaseoperation.class); startactivity(ⅰ); ............................... 这将使控件移动到databaseoperation类 它执行各种操作,如open.close,insert delete..etc。

U可以在内置类

中扩展databasehelper

现在当打开数据库或任何东西出现问题时, 完成()意图并返回主要活动...

你可以这样做..

感谢rakesh

答案 1 :(得分: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();
        }
    });

}

答案 2 :(得分:0)

createDataBase()会抛出错误还是自己处理错误?如果它自己处理异常,那么它永远不会到达你的外部块,因此你永远不会通过catch块。确保在方法签名的末尾添加throws IOException,如下所示:

public void createDataBase() throws IOException {[...]}

另外,请确保没有任何try / catch块捕获createDataBase()内的

这样,每当IOException发生时,它就被委托给你的外部catch块,你的对话框就会出现。