【问题标题】:Toast in an AlertDialog in a try/catch在 try/catch 中的 AlertDialog 中吐司
【发布时间】:2012-04-02 22:28:04
【问题描述】:

当用户为无法在数据库中删除的项目输入数字时,我试图显示错误消息。我已经得到它,所以用户可以从数据库中删除一个项目,我认为如果数字不存在,我认为使用 try catch 来避免运行时错误。我想要做的是当用户输入无效号码时弹出祝酒词。我已经看过堆栈上的其他类似帖子并且没有任何运气。这是我的代码。如果您需要我发布更多代码,请告诉我。

public void onClick(DialogInterface dialog, int which) {
    try {
        String id=idNum.getText().toString();
        long primaryId=Long.parseLong(id);

        info.open();
        info.deleteInspection(primaryId);
        info.close();
        dbInfo();
    } catch(Exception e) {
        Toast.makeText(getApplicationContext(), "Number not found", Toast.LENGTH_SHORT).show();
    }
}

【问题讨论】:

  • 你可以给info.deleteInspection(primaryId);一个返回值,并在它返回意味着该数字不存在的东西时显示toast。捕获异常并不是一个干净的方法

标签: android sqlite try-catch toast android-alertdialog


【解决方案1】:

你可以让你的 deleteInspection() 方法返回一个布尔值,告诉你给定的 id 是否被删除。然后在你的 onClick 方法中检查它:

boolean result = info.deleteInspection(primaryId);
if(!result) {
   Toast.makeText(getApplicationContext(), "Number not found", Toast.LENGTH_SHORT).show();
}

【讨论】:

  • 谢谢,我无法弄清楚如何将删除语句转换为布尔值。有什么想法吗?
  • @Aaron SQLiteDatabase 对象有一个 delete() 方法,它返回受影响的行数(在您的情况下为 0 或 1)。
【解决方案2】:

这里不是try/catch,你想发布“找不到号码”

你需要的是从你的数据库中返回它发现这个 id 是否删除的结果

正如 Soren.Qvist 所说。

你需要从你的数据库中返回一些值到你的代码中(可能是 -1、false 等)并检查它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2011-11-17
    相关资源
    最近更新 更多