显示Java类的Toast通知

时间:2014-12-31 16:55:29

标签: java android class toast android-context

我想在我的应用程序中创建一个单独的类来处理错误报告并将特定错误发送到数据库。但是,我无法弄清楚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代码提交信息。我希望这个类做的另一件事是显示一个toast,将基本的错误信息反馈给用户。我有正确的数据提交部分(因此Runnable的原因),但我仍然得到Toast的错误。

3 个答案:

答案 0 :(得分: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,其形式可以是:

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

例如:

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

答案 1 :(得分:1)

创建此类时,只需在构造函数中传递Context

我建议你重新考虑这个课程 - 它被称为" SendError"这听起来像一个方法名称,它出于某种原因实现Runnable,并且它通过Toasts通知用户 - 对于一个类来说听起来太多了。

答案 2 :(得分:1)

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

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