Próbuję wysłać powiadomienie dla odtwarzacza muzycznego za pomocą elementów sterujących. Z powodzeniem słucham zdarzeń kliknięcia przycisku, a funkcje są uruchamiane prawidłowo. Jedynym problemem, z którym borykam się, jest zmiana tekstu powiadomienia na tych zdarzeniach kliknięcia. Oto, co próbuję.Dynamicznie zmieniaj tekst powiadomienia z Androidem
Jest to odbiornik, który pomyślnie odbiera połączenia i wypala każdą linię idealnie. Ale nie mogę zmienić tekstu. Myślę, że muszę zresetować widok zawartości do powiadomienia. Jeśli tak, jak to zrobić?
@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");
}
}
Rozwiązanie:
zaktualizowałem moją Notification klasy konstruktora przekazać dodatkowe argumenty i dostał to działa!
@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 obsługuje nowe przekazane argumenty.
Och, teraz wszystkie dokumentacje mają sens. Dziękuję za wskazanie. Próbowałem i działa dobrze. Zaktualizowałem swoje pytanie za pomocą rozwiązania. – unkn0wn
Pamiętaj też, jeśli chcesz, aby aktualizacja była ładna i nie została usunięta i ponownie utworzona (co spowoduje, że twoje powiadomienie zostanie usunięte i pojawi się ponownie w innym miejscu na liście), musisz użyć 'builder.setOnlyAlertOnce (true) 'jak również MUSISZ użyć tego samego konstruktora, w przeciwnym razie nie będzie aktualizacji, zrobi to głupia rzecz rekreacyjna. (Walczyłem z tym od wielu dni i nadal nie mogę tego zmienić, dodam je tylko do istniejących :-() – Jared