2010-10-26 49 views
0

想象我有作为后台处理器的Android应用程序下面的代码:为什么'toast'消息在Android中不起作用?无法修复错误,请帮助!

public class Background extends Service 
{ 
    public void popup (String message, int duration) 
    { 
     Toast.makeText(this, message, duration).show(); 
    } 

    class BackgroundChecker extends TimerTask 
    { 
     public void run() 
     { 
      popup("Message!", Toast.LENGTH_LONG); // here 
     } 
    } 
} 

当它到达弹出消息即//这里,Android的告诉我强制退出。我知道问题出在上下文,即this,但我不知道为什么,因为我已经在Android API告诉我的那个类中扩展了Service。你能帮我弄清楚为什么会发生这种情况,以及如何解决它?顺便说一句,而不是this我用getApplicationContext()很好,但它仍然崩溃=(

谢谢。

回答

1

我还没有尝试这样做,但如何让你的服务告诉一个活动做举杯,因为服务是一种后台活动,好像它的上下文难道不工作,做一个敬酒。

别的东西,你可以尝试是扩展应用程序类,并且都举杯发电机在那里,然后从您的服务请求。

ApplicationExtender variableName = (ApplicationExtender) Background.this.getApplication();    
variableName.toast("message"); 

您ApplicationExtender:

public class ApplicationExtender extends Application { 

    public void toast(String message){ 
    Toast.makeText(super.getApplicationContext(),message,Toast.LENGTH_LONG).show(); 
    } 

} 

您需要在扩展类添加到您的清单为它工作。

<application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".ApplicationExtender"> 

我不能保证这会工作,我还没试过。

+0

对不起,您上面的Application类是什么意思?你的意思是背景类 – androidNoob 2010-10-26 14:43:20

+0

不好意思,我试过了,但它仍然崩溃。还有其他建议吗? – androidNoob 2010-10-26 14:51:41

+0

我需要看到你的logCat给你更多的反馈。 – blindstuff 2010-10-26 15:01:37

相关问题