2014-02-22 46 views
0

我試圖從CountDownTimer類的onTick()函數內部顯示Toast消息。這個類正在服務中運行。無法顯示來自CountDownTimer(在服務內部運行)的onTick內部的Toast消息

簡單做Toast.maketext(「tag」,「toast message」) - 崩潰應用程序。

所以我嘗試了一個處理程序 - 處理程序,應用程序不會崩潰,但我也看不到吐司消息。任何有關錯誤的幫助都將有所幫助。

我確定我的倒數計時器正常運行並且正在調用onTick - 我添加了LogCat語句來確認。

public class MyServicelockCountdownTimer extends CountDownTimer { 

    public FBServicelockCountdownTimer(long millisInFuture, 
      long countDownInterval) { 
     super(millisInFuture, countDownInterval); 
    } 

    @Override 
    public void onFinish() { 
    } 

    @Override 
    public void onTick(long millisUntilFinished) { 
        handler.post(new Runnable() { 
         @Override 
         public void run() { 
          Toast.makeText(
            getApplicationContext(), 
            "This is toast message from inside onTick of the CountDownTimer inside the Service", 
            Toast.LENGTH_LONG).show(); 
         } 
        }); 

       } else { 

       } 
      } catch (NameNotFoundException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
+0

我認爲你的處理程序是創建附加到主線活套? –

+0

您是否將服務與您的活動綁定? http://developer.android.com/guide/components/bound-services.html#Messenger – ezcoding

+0

檢查此線程 http://stackoverflow.com/questions/11319340/how-to-obtain-application-context-from - 廣播 - 接收器 – Sishin

回答

2

嘗試使用this從您的活動,而不是使用getApplicationContext():

Toast.makeText(
    YourActivity.this, 
    "This is toast message from inside onTick of the CountDownTimer inside the Service", 
    Toast.LENGTH_LONG).show(); 
+0

這是一個服務,而不是一個活動 – user1406716

+0

試試這個鏈接可能會幫助你[http://www.jjoe64.com/2011/09/show-toast-notification-from-service.html ] – goonerDroid

+0

鏈接不起作用 – user1406716

0

嘗試使用getMainLooper其中尺蠖類的()方法 -

返回應用程序的主尺蠖,其住在應用程序的主線程。 //來自android文檔。

而且您還應該考慮將Activites綁定到服務以處理UI更新。

檢查此link以及更多細節。

0
public abstract void onReceive (Context context, Intent intent) 

中的onReceive你會方面

呼叫getApplicationContext()上的onReceive提供給您的上下文( ),就像你在一個Activity上調用getApplicationContext()一樣。

+0

我沒有onreceive – user1406716

相關問題