我試圖在我的應用程序中處理異常。我正在嘗試記錄異常,然後使用Toast警告用戶存在問題。我在我所有課程中都有這個擴展Activity的工作發現。活動類別之外的Android環境
但是,在沒有擴展活動的任何類中,我不能使用toast方法,因爲我無法獲取當前上下文。有沒有簡單的方法來解決這個問題,或者我的班級的所有擴展活動?
我試圖在我的應用程序中處理異常。我正在嘗試記錄異常,然後使用Toast警告用戶存在問題。我在我所有課程中都有這個擴展Activity的工作發現。活動類別之外的Android環境
但是,在沒有擴展活動的任何類中,我不能使用toast方法,因爲我無法獲取當前上下文。有沒有簡單的方法來解決這個問題,或者我的班級的所有擴展活動?
你只是通過上下文 當你調用自Activity類的呼叫Non-Activity
類像
YourNonActivtyClass obj = new YourNonActivtyClass(Activity.this);
吐司消息應該在應用環境中工作,即
Toast.makeText(getApplicationContext(), ...);
如果他不在活動,那麼可能沒有getApplicationContext()方法。另外,不需要使用這種方法。活動對象本身就是一個上下文。所以使用YourActivityName.this將會正常工作,而不是getApplicationContext(); – FoamyGuy 2012-03-15 18:05:26
特別是你的工作有什麼其他結構?他們中的許多人或者已經有一個Context,或者在某個時候獲得傳遞給他們的上下文。 – FoamyGuy 2012-03-15 17:57:02
您可以將上下文設置爲成員字段並在構造函數中設置。但是這可能導致內存泄漏,請謹慎使用(避免靜態引用上下文)。 – j0ntech 2012-03-15 17:57:43
我有兩個類:1)RegistrationScreen,它擴展了Activity。 2)不擴展Activity的SocketClient。當用戶在RegistrationScreen中提交表單時,它會創建一個新的SocketClient對象,該對象通過套接字連接進行註冊(引發IOException的位)。如果成功的話,SocketClient會向RegistrationScreen類返回值,但如果它不成功,我會掙扎。我應該讓SocketClient拋出異常並在RegistrationScreen中捕獲它們嗎? – Joseph 2012-03-15 18:01:22