Pourquoi pas le travail de message « pain grillé », dans Android? Ne peut pas résoudre bug, s'il vous plaît aider!

StackOverflow https://stackoverflow.com/questions/4024620

Question

Imaginez que j'ai le code suivant qui fonctionne comme un processeur de fond pour une application 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
        }
    }
}

Quand il atteint le message pop-up à savoir // ici, Android me dit de quitter la force. Je sais que le problème est avec le contexte à savoir this, mais je ne sais pas pourquoi parce que je l'ai étendu le service dans cette classe qui API Android m'a dit. Pouvez-vous me aider à comprendre pourquoi ce qui se passe et comment y remédier? Soit dit en passant, au lieu de this je getApplicationContext() aussi bien, mais il se bloque toujours = (.

Merci.

Était-ce utile?

La solution

Je n'ai pas essayé, mais que diriez-vous d'avoir votre service dire une activité à faire un toast, car un service est une activité de fond, il semble que son travail wouldnt contextuel pour faire un toast.

Quelque chose d'autre, vous pouvez essayer est d'étendre la classe d'application, et un générateur de pain grillé là-bas, puis de votre appel de service.

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

Votre ApplicationExtender:

public class ApplicationExtender extends Application {

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

}

Vous devez ajouter votre classe à votre extension manifeste pour que cela fonctionne.

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

Je ne peux pas garantise cela fonctionne, je nai essayé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top