2014-12-31 64 views
3

我想在我的應用程序中創建一個單獨的類來處理錯誤報告並將特定的錯誤發送到數據庫。然而,我無法弄清楚Context應該是什麼以及如何正確編碼。我認爲它仍然是可能的,我只需要以不同的方式進行編碼,如果情況並非如此,那麼對我來說最好的解決方案是什麼?顯示來自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(); 
      } 
     }); 
    } 
} 

編輯:

我想要做的就是創建一個類的數據提交到數據庫的時候,處理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它可以採取下列形式:

  • this(在Activity
  • ActivityName.this(在Activity的內部類別中)
  • getActivity(在Activity內的Fragment中)

例如:

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

做完這些之後,我仍然得到一個錯誤,請檢查我的編輯,以更好地解釋我正在嘗試做什麼。 – Jim