2014-09-13 18 views
5

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.

Odpowiedz

5

Nie można zmienić rzeczy w powiadomieniu. To na pewno trochę denerwujące, wystarczy zastąpić bieżące powiadomienie nowym, nowym tekstem.

Moja aplikacja jest wysyłana i co 3 sekundy aktualizujemy powiadomienie, aby zmienić wartość procentową.

po prostu ponownie zbuduj powiadomienie i zadzwoń pod numer notify() na numer NotificationManager o tym samym ID.

+0

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

+1

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

Powiązane problemy