【问题标题】:Displaying Toast notifications from Java class显示来自 Java 类的 Toast 通知
【发布时间】:2014-12-31 16:55:29
【问题描述】:

我想在我的应用程序中创建一个单独的类来处理错误报告并将特定错误发送到数据库。但是,我无法弄清楚 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 错误。

【问题讨论】:

  • 你在哪里创建这个SendError对象?
  • 我在一个完全独立的类文件中创建了它。

标签: java android class toast android-context


【解决方案1】:

不应该在你的构造函数中做这个工作,这会让你的单独的类没用。

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();
            }
        });
    }
}

您的上下文需要是相关的上下文,从使用 ToastContext 通常是 Activity,它可以采用以下形式:

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

例如:

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

【讨论】:

  • 执行此操作后我仍然收到错误,请检查我的编辑以更好地解释我正在尝试做什么。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:
    Toast toast = Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-17
      • 2020-06-13
      • 2015-11-19
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多