2014-12-31 1 views
3

Я хочу создать отдельный класс в своем приложении для обработки отчетов об ошибках и отправки определенных ошибок в базу данных. Тем не менее, я не могу понять, что должно быть Context и как это должно быть правильно закодировано. Я предполагаю, что это все еще возможно, мне просто нужно закодировать его по-другому, если это не так, для меня это лучшее решение?Отображение уведомлений Toast из класса Java

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

EDIT:

То, что я пытаюсь сделать, это создать один класс для всего моего приложения, который обрабатывает запись ошибок SQL при передаче данных в базу данных. Класс должен сделать 2 простых вещи. Отправьте информацию на основе какой формы, базы данных, времени и кода SQL, создавшего ошибку. Другая вещь, которую я хотел бы сделать этому классу, - показать тост, который возвращает основную информацию об ошибке пользователю. У меня есть часть представления данных, которая была разработана правильно (отсюда причина для Runnable), но я все еще получаю ошибки для Toast.

+0

где вы создаете этот 'SendError' объект? – ataulm

+0

Я создал его в полностью отдельном файле класса. – Jim

ответ

1

Просто нужно передать Context в конструкторе при создании этого класса.

Я бы посоветовал вам переосмыслить этот класс, хотя это называется «SendError», который звучит как имя метода, по какой-то причине он реализует Runnable, и он уведомляет пользователя с Toasts - звучит слишком много для одного класса.

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

или

Toast toast = Toast.makeText(SendError.this, msg, Toast.LENGTH_LONG).show(); 
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(); 
      } 
     }); 
    } 
} 

Ваш контекст должен быть соответствующий контекст, с использованием ToastContext, как правило, Activity, который может принимать форму:

  • thisActivity)
  • ActivityName.this (во внутреннем классе Activity)
  • getActivityFragment внутри Activity)

Например:

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

После этого я все равно получаю сообщение об ошибке, пожалуйста, проверьте мое редактирование для лучшего объяснения того, что я пытаюсь сделать. – Jim