从Java类中显示Toast通知

3

我希望在我的应用程序中创建一个单独的类来处理错误报告并将特定错误发送到数据库。然而,我无法弄清楚Context应该是什么以及如何正确编码。我认为这仍然是可能的,我只需要以不同的方式编码它,如果不是这种情况,那么对我来说最好的解决方案是什么?

public class SendError implements Runnable
{

    private String url;

    public SendError(String errors, String form, String database, String SQL)
    {
        url = string;

        Handler handler = new Handler();        
        handler.post(new Runnable() {
            public void run() {
                Toast toast = Toast.makeText(getContext, msg, Toast.LENGTH_LONG);
                toast.show();
            }
        });
    }
}

编辑:

我的目标是创建一个应用程序的类,用于处理将数据提交到数据库时记录SQL错误。该类需要执行两个简单的操作。根据表单、数据库、提交时间和创建错误的SQL代码提交信息。我希望这个类还能够显示烤面包提示,向用户提供基本错误信息。我已经正确解决了数据提交部分(因此使用了Runnable),但仍然出现Toast错误。


你在哪里创建这个 SendError 对象? - ataulm
我在一个完全独立的类文件中创建了它。 - Jim
3个回答

2
不应该在构造函数中完成工作,这会使您的单独类失去意义。
public class SendError implements Runnable
{

    private final Context context;
    private final String url;

    public SendError(Context context, String string) {
        this.context = context;
        this.url = string;
    }

    public void makeToast(String msg, String errors, String form, String database, String SQL) {
       Handler handler = new Handler();        
        handler.post(new Runnable() {
            public void run() {
                Toast toast = Toast.makeText(context, msg, Toast.LENGTH_LONG);
                toast.show();
            }
        });
    }
}

您的上下文需要是相关的上下文,在使用Toast时,Context通常是一个Activity,可以采用以下形式:

  • this(在Activity中)
  • ActivityName.this(在Activity的内部类中)
  • getActivity(在Activity内的Fragment中)

例如:

 new SendError(YourActivity.this, "something").makeToast("Hello", "errors", "form", "database", "sql");

做完这些之后,我仍然遇到错误,请查看我的编辑以更好地解释我想要做的事情。 - Jim

1
Toast toast = Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();

或者

Toast toast = Toast.makeText(SendError.this, msg, Toast.LENGTH_LONG).show();

1

在创建这个类时,只需要在构造函数中传递Context即可。

我建议您重新考虑这个类 - 它被称为"SendError",听起来像是一个方法名称,它出于某种原因实现了Runnable,并使用Toast通知用户 - 听起来一个类做的事情太多了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接