Quand j'appelle Toast à l'intérieur d'un service -a nouvel onglet avec le message « Source not found » et « Timer.class » dans le titre de l'onglet apparaît

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

Question

J'utilise Eclipse et exécuter l'application en mode débogage. J'ai une classe - AAStartsHere, dérivé de TabActivity. Cette classe dérivée lance un service (AAservice). AAService Configurations de une minuterie / TimerTask AACallback. A partir de l'intérieur de ce que je configuration callback Toast en utilisant la notification. Lorsque AAcallback appelle le Toast, les paramètres passés à Toast semblent OK, mais rien ne semble ou apparaît sur l'écran, à la place un nouvel onglet (intitulé Timer.class) apparaît ...

Voici le fragment de code

 
AAStartsHere extends TabActivity {
  :
Intent serviceIntent = new Intent (this, AAservice,...); : startservice(serviceIntent); : } TimerTask execAACallback = newTimerTask { run() {AAcallback(); } }; AAService extends Service{ onCreate() { : AANotifcation = new Notification(....); : AATimer.scheduleAtFixedRate(execAACallback, ...) } AACallback() { : String svcName = Context.NOTIFICATION_SERVICE; NotificationManager notiMgr = (NotificationManager) getSystemService(svcName); Context context = getApplicationContext(); String text = "text goes here"; String title = "Title goes here"; Intent AAIntent = new Intent(AAService.this, AAStartsHere.class); PendingIntent AAPendingIntent = PendingIntent.getActivity(context, 0, AAIntent, 0); AANotification.setLatestEventInfo(context, title, text, AAPendingIntent); AANotification.when = java.lang.System.currentTimeMillis(); notiMgr.notify(AA_NOTIFICATION_ID, AANotification); Toast.makeText(context, title, Toast.LENGTH_LONG).show(); : } }

Le nouvel onglet qui apparaît (dans Eclipse / debug mode) a le texte suivant Editeur de classe de fichiers source introuvable Le JAR de ce fichier de classe appartient au conteneur « Android 2.1" qui ne permet pas de modifications aux pièces jointes source // Compilé à partir timer.java (version 1.5: 49,0, peu super) :

S'il vous plaît laissez-moi savoir vos pensées - ce que je manque? Nous vous remercions de l'aide et de l'effort. Abhi

Était-ce utile?

La solution

Parfois, ne montrent pas de pain grillé du service si elle reste trop longtemps qui encapsule l'intervalle de temps du toast à montrer. Essayez de montrer le message du toast à la fin du processus de votre service comme:

AAStartsHere extends TabActivity {
:

  Intent serviceIntent = new Intent (this, AAservice,...);
  :
  startservice(serviceIntent);
  :
}
TimerTask execAACallback = newTimerTask { run() {AAcallback(); } };
AAService extends Service{
    onCreate() {
      :
      AANotifcation = new Notification(....);
      :
      AATimer.scheduleAtFixedRate(execAACallback, ...)
   }
   AACallback() {
      : 
      String svcName = Context.NOTIFICATION_SERVICE;
      NotificationManager notiMgr = (NotificationManager) getSystemService(svcName);
      Context context = getApplicationContext();
      String text = "text goes here";
      Intent AAIntent = new Intent(AAService.this,  AAStartsHere.class);
      PendingIntent AAPendingIntent =  PendingIntent.getActivity(context, 0, AAIntent, 0);
      AANotification.setLatestEventInfo(context, title, text, AAPendingIntent);
      AANotification.when = java.lang.System.currentTimeMillis();
      notiMgr.notify(AA_NOTIFICATION_ID, AANotification);
      :
  }
  onStartCommand() {
     String title  = "Title goes here";
     AACallBack();
     Toast.makeText(context, title, Toast.LENGTH_LONG).show();
  }
}

Autres conseils

renvoie getApplicationContext () vous une instance de votre classe d'application, pas une activité. Vous ne pouvez pas l'utiliser pour tartines d'affichage, vous devez utiliser un contexte d'une activité.

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