2014-09-13 18 views
5

मैं नियंत्रण वाले संगीत प्लेयर के लिए अधिसूचना बनाने की कोशिश कर रहा हूं। मैं सफलतापूर्वक बटन क्लिक घटनाओं को सुन रहा हूं और कार्यों को ठीक से निकाल दिया जा रहा है। केवल एक समस्या जो मैं सामना कर रहा हूं, इन क्लिक घटनाओं पर अधिसूचना के पाठ को बदल रहा है। यहां मैं कोशिश कर रहा हूं।एंड्रॉइड अधिसूचना पाठ गतिशील रूप से बदलें

यह रिसीवर सफलतापूर्वक कॉल प्राप्त कर रहा है और प्रत्येक पंक्ति को पूरी तरह से फायर कर रहा है। लेकिन मैं पाठ बदल नहीं सकता। मुझे लगता है कि मुझे सामग्री दृश्य को अधिसूचना में रीसेट करना होगा। अगर ऐसा है, तो मैं वह कैसे करू?

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

समाधान:

मैं एक अतिरिक्त तर्क पारित करने के लिए अद्यतन मेरी अधिसूचना वर्ग निर्माता और यह काम कर रहा हो गया है!

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

कन्स्ट्रक्टर नए पास किए गए तर्कों को संभालने में कामयाब रहा है।

उत्तर

5

आप वास्तव में अधिसूचना पर सामान नहीं बदल सकते हैं। यह निश्चित रूप से थोड़ा परेशान है, आपको केवल नए अधिसूचना के साथ मौजूदा अधिसूचना को एक नए से बदलना होगा।

मेरा ऐप एक अपलोड प्रक्रिया है और हर 3 सेकंड हम प्रतिशत बदलने के लिए अधिसूचना अद्यतन कर रहे हैं।

इसलिए बस अधिसूचना को फिर से बनाएं और NotificationManager पर उसी आईडी के साथ notify() पर कॉल करें।

+0

ओह, अब सभी दस्तावेज समझ में आते हैं। इस पर ध्यान दिलाने के लिए धन्यवाद। मैंने कोशिश की और यह ठीक काम कर रहा है। मैंने समाधान के साथ अपना प्रश्न अपडेट किया। – unkn0wn

+1

अगर आप इसे सुंदर अपडेट करना चाहते हैं और इसे मिटाना नहीं चाहते हैं (जो आपकी अधिसूचना मिटा दी जाएगी और सूची में कहीं और फिर से पॉप-अप करेगा), तो आपको 'builder.setOnlyAlertOnce (सच) 'साथ ही आपको एक ही निर्माता का उपयोग करना होगा, अन्यथा यह अपडेट नहीं होगा, यह मूर्खतापूर्ण मनोरंजन चीज करेगा। (मैं इसके साथ दिनों से लड़ रहा हूं और मुझे अभी भी बटन अपडेट करने के लिए प्रतीत नहीं होता है, यह केवल उन्हें मौजूदा लोगों के अतिरिक्त जोड़ देगा :-() – Jared

संबंधित मुद्दे