2014-09-13 12 views
5

Ich versuche, eine Benachrichtigung für einen Musik-Player mit Steuerelementen zu machen. Ich höre erfolgreich auf die Schaltfläche klicken Ereignisse und Funktionen werden ordnungsgemäß ausgelöst. Das einzige Problem, mit dem ich konfrontiert bin, ist das Ändern des Benachrichtigungstexts für diese Klickereignisse. Hier ist, was ich versuche.Android Benachrichtigung Text dynamisch ändern

Dies ist der Empfänger erfolgreich empfangen die Anrufe und feuern jede Zeile perfekt. Aber ich kann den Text nicht ändern. Ich denke, ich muss die Inhaltsansicht auf Benachrichtigung zurücksetzen. Wenn ja, wie mache ich das?

@Override 
public void onReceive(Context context, Intent intent) { 
    String action = intent.getAction(); 
    if (action.equals("stop")) { 
     ABCFragment.stopSong(); 
     Log.d("Notification","Stopping"); 
    }else if (action.equals("play")) { 
     ABCFragment.togglePlayPause(); 
     Log.d("Notification","Toggle Play/Pause"); 
     RemoteViews contentView = new RemoteViews(context.getPackageName(),R.layout.notification_layout); 
     contentView.setTextViewText(R.id.songName, "SOME NEW SONG"); 
    }else if (action.equals("next")) { 
     ABCFragment.playNextSong(); 
     Log.d("Notification","Next"); 
    } 
} 

Lösung:

ich meine Mitteilung Klassenkonstruktors aktualisierte ein zusätzlichen Argumente zu übergeben und bekam Arbeit it!

@Override 
public void onReceive(Context context, Intent intent) { 
    String action = intent.getAction(); 
    if (action.equals("stop")) { 
     ABCFragment.stopSong(); 
     Log.d("Notification","Stopping"); 
    }else if (action.equals("play")) { 
     ABCFragment.togglePlayPause(); 
     Log.d("Notification","Toggle Play/Pause"); 
     new ABCNotification(context, "SOME NEW SONG"); 
    }else if (action.equals("next")) { 
     ABCFragment.playNextSong(); 
     Log.d("Notification","Next"); 
    } 
} 

Konstruktor behandelt die neuen übergebenen Argumente.

Antwort

5

Sie können nicht wirklich Sachen bei der Benachrichtigung ändern. Es ist sicher etwas nervig, man muss nur die aktuelle Benachrichtigung durch eine neue mit dem neuen Text ersetzen.

Meine App gibt es einen Upload-Prozess und alle 3 Sekunden aktualisieren wir die Benachrichtigung, um den Prozentsatz zu ändern.

so einfach bauen Sie die Benachrichtigung und rufen Sie notify() auf der NotificationManager mit der gleichen ID.

+0

Oh, jetzt sind alle Dokumentationen sinnvoll. Danke, dass du es aufgezeigt hast. Ich habe es versucht und es funktioniert gut. Ich habe meine Frage mit der Lösung aktualisiert. – unkn0wn

+1

Denken Sie auch daran, wenn Sie möchten, dass es schön aktualisiert wird und es nicht löscht und neu erstellt (was Ihre Benachrichtigung löscht und an anderer Stelle in der Liste wieder auftaucht), müssen Sie 'builder.setOnlyAlertOnce (true) 'sowie Sie müssen den gleichen Builder verwenden, sonst wird es nicht aktualisieren, wird es die doof Erholung Sache tun. (Ich habe seit Tagen damit zu kämpfen und ich kann es immer noch nicht bekommen, um die Knöpfe zu aktualisieren, es wird sie nur zusätzlich zu den vorhandenen hinzufügen :-() – Jared

Verwandte Themen