2014-09-13 21 views
5

Sto tentando di effettuare una notifica per un lettore musicale con controlli. Sto ascoltando con successo gli eventi del pulsante clic e le funzioni vengono attivate correttamente. L'unico problema che sto affrontando è la modifica del testo della notifica su questi eventi click. Ecco cosa sto cercando.Modificare dinamicamente il testo di notifica Android

Questo è il ricevitore che riceve correttamente le chiamate e attiva perfettamente ogni riga. Ma non posso cambiare il testo. Penso di dover resettare la vista del contenuto alla notifica. Se è così, come faccio?

@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"); 
    } 
} 

Soluzione:

ho aggiornato il mio Notifica costruttore della classe di passare un argomenti extra e ottenuto che funziona!

@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"); 
    } 
} 

costruttore sta gestendo i nuovi argomenti passati.

risposta

5

non si può davvero cambiare roba alla notifica. È un po 'fastidioso, devi solo sostituire la notifica corrente con una nuova con il nuovo testo.

La mia app è una procedura di caricamento e ogni 3 secondi stiamo aggiornando la notifica per modificare la percentuale.

ricreare così semplicemente la notifica e chiamare notify() su NotificationManager con lo stesso ID.

+0

Oh, ora tutte le documentazioni hanno senso. Grazie per segnalarlo. L'ho provato e funziona bene. Ho aggiornato la mia domanda con la soluzione. – unkn0wn

+1

Inoltre, tieni presente che se vuoi aggiornarlo in modo carino e non cancellarlo e ricrearlo (che renderà la tua notifica cancellata e reinserita da qualche altra parte nell'elenco), devi usare 'builder.setOnlyAlertOnce (true) 'così come DEVI usare lo stesso builder, altrimenti non si aggiornerà, farà la cosa sciocca di ricreazione. (Ho combattuto con questo per giorni e ancora non riesco a farlo per aggiornare i pulsanti, li aggiungerò solo in aggiunta a quelli esistenti :-() – Jared

Problemi correlati