【问题标题】:Show toast within try-catch block在 try-catch 块中显示 toast
【发布时间】:2013-11-24 16:39:00
【问题描述】:

我是 android 编程的新手,我正在尝试开发一个简单的应用程序,我正在尝试使用如下所示的 try catch 块发送电子邮件:

new Thread(new Runnable() {
public void run() {
    try {       
        GMailSender sender = new GMailSender("username@gmail.com","password");
            sender.sendMail("Test mail","This mail has been sent from android app along with attachment","username@gmail.com","Someuser1@gmail.com");
            } catch (Exception e) {
        Toast.makeText(getApplicationContext(), "Error",Toast.LENGTH_LONG).show();
        }
    }
}).start();

从上面的代码中,当电子邮件发送失败时,我使用 toast 显示错误。 但是现在我想知道如果邮件发送成功我需要显示吐司

这是我尝试过的,但应用程序崩溃并且无法显示任何 toast

new Thread(new Runnable() {
public void run() {
    try {       
            GMailSender sender = new GMailSender("username@gmail.com","password");
                sender.sendMail("Test mail","This mail has been sent from android app along with attachment","username@gmail.com","Someuser1@gmail.com");
            Toast.makeText(getApplicationContext(), "Success",Toast.LENGTH_LONG).show();
                } catch (Exception e) {
            Toast.makeText(getApplicationContext(), "Error",Toast.LENGTH_LONG).show();
            }
        }
    }).start();

任何人都可以指导正确的方法来实现我的目标。

【问题讨论】:

    标签: android try-catch toast


    【解决方案1】:

    使用下面的代码显示 toast 将 ui 相关内容放入 UI 线程中

    runOnUiThread(new Runnable(){
    public void run() {
       Toast.makeText(getApplicationContext(), "Error",Toast.LENGTH_LONG).show();
    }
    });
    

    【讨论】:

    • @Arju-首先感谢您的回复。您能告诉我上面的代码是做什么的吗?这段代码到底去了哪里?
    • 上面的代码是你使用的线程,但不同的是它是一个UI线程,由于toast与UI相关,你需要这样一个线程
    • 好的。但我需要在发送后收到一条成功消息,而不是错误消息。
    • 更改toast中的文字,其实可以把代码放在一个方法中,通过传递消息来调用方法 例如:ShowToast("Success");
    • 知道了 :) 感谢 Arju 的宝贵时间
    【解决方案2】:

    只是为了让 Viswanath Lekshmanan 更清楚地回答 Android 新手

    try{
    
    runOnUiThread(new Runnable(){
    public void run() {
       Toast.makeText(getApplicationContext(), "Success Message",Toast.LENGTH_LONG).show();
    }
    });
    
    }catch() {
    
    runOnUiThread(new Runnable(){
    public void run() {
       Toast.makeText(getApplicationContext(), "Error Message",Toast.LENGTH_LONG).show();
    }
    });
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      相关资源
      最近更新 更多