如何保持强制关闭活动?

时间:2011-02-06 15:03:42

标签: android android-activity

我有这段代码很容易出错,所以我用try {} catch语句包装它。我不想回到之前的活动,我只是希望它保持当前活动,以便用户可以编辑它们的任何错误。

我该如何实现?

    try{
        orgi.insertOrThrow(tableName, null, values);
        Toast.makeText(this, "You have successfully created a new profile!", 2).show();
        gotoProfileList();
        Log.e(getClass().getSimpleName(),"Successfully added to database");
    }catch(SQLiteException se){
        Log.e(getClass().getSimpleName(), "Database connection failed!" + se);

        //Stay in this activity...
    }finally{
        if (orgi != null){
            orgi.close();
        }
    }

忘了它,我能够通过显示一个告诉用户错误的alertDialog来解决我自己的问题。不管怎么说,多谢拉。 :)

            try{
                orgi.insertOrThrow(tableName, null, values);
                Toast.makeText(this, "You have successfully created a new profile!", 2).show();
                gotoProfileList();
                Log.e(getClass().getSimpleName(),"Successfully added to database");
            }catch(SQLiteException se){
                Log.e(getClass().getSimpleName(), "Database connection failed!" + se);
                displayError();
                //stayInThisActivity();
            }finally{
                if (orgi != null){

                }   

public void displayError(){
            AlertDialog.Builder error = new AlertDialog.Builder(this);
            error.setMessage("That profile name already exists, try another one.").setCancelable(false).setPositiveButton("Yes",new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();

                }
            });

            AlertDialog alert = error.create();
            alert.setTitle("Error");
            alert.show();
        }

1 个答案:

答案 0 :(得分:2)

强制关闭是由未捕获的异常引起的。您只在示例中捕获SQLiteException。您需要捕获其他异常并优雅地处理它们。 现在,FC的经典原因是使用空对象并产生NullPointerExceptions。你不应该抓住这些。在许多情况下,您的应用程序将太乱以至于无法正常继续。您可以在此处阅读更多内容:Catch_NullPointerException

在任何情况下,您都应该在模拟器或连接的手机上运行应用程序,导致崩溃,然后使用DDMS或“adb logcat”登录设备日志。查看回溯,找到错误,修复它。如果您的应用程序在市场上,市场将列出您的用户设备发送的回溯。如果您(还没?)使用Android Market,您可以让您的应用程序通过在android-remote-stacktrace

的Web服务器上运行的PHP脚本远程记录堆栈跟踪

BTW最好将Exception作为第三个参数传递给Log方法,而不是将第二个参数连接到异常(从而隐式调用toString())。在您的示例中:

Log.e(getClass().getSimpleName(), "Database connection failed!", se);