2012-11-02 13 views
9

तो onUpdate विधि क्रम विजेट में सूचीदृश्य करने के लिए एडॉप्टर लागू करने के लिए कहता हैAndroid होम स्क्रीन विजेट: RemoteViews setRemoteAdapter (...) विधि एपीआई पर काम नहीं कर 11+

remoteViews.setRemoteAdapter(id, R.id.listview, intent)

विजेट के शीर्षलेख में एक बटन है जो बदल सकता है कि कौन सा डेटा सेट सूचीदृश्य द्वारा प्रदर्शित किया जाता है (एक hypothetical ईमेल विजेट के लिए इनबॉक्स, आउटबॉक्स, तारांकित, आदि सोचें)। जब मैं उस बटन पर क्लिक करता हूं, तो यह उपयोगकर्ता को एक गतिविधि में ले जाता है जो उन्हें यह चुनने की अनुमति देता है कि कौन सा डेटा सेट प्रदर्शित करना है। जब चयन किया जाता है, निम्नलिखित कोड चलता है:

Intent intent = new Intent(this, WidgetReceiver.class); 
intent.setAction("android.appwidget.action.APPWIDGET_UPDATE"); 
intent.putExtra("notify", true); 
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] {R.xml.widget_provider}); 
sendBroadcast(intent); 

यह सफलतापूर्वक विजेट के AppWidgetProvider कक्षा में onUpdate प्रणाली को बुलाती है। हालांकि, अगर मैं विभिन्न प्रकार के डेटा सेटों के बीच टॉगल करना चाहता था, 2-3 प्राथमिकता परिवर्तनों के बाद, setRemoteAdapter विधि बस कार्य करना बंद कर देती है। मैंने प्रक्रिया को व्यापक रूप से लॉग किया है, और विधि, जो एक सेवा को कॉल करने वाली है, जो बदले में RemoteViewsService.RemoteViewsFactory कक्षा को विजेट और उसके एडाप्टर को पॉप्युलेट करने के लिए लोड करती है, इन चीजों में से कोई भी काम नहीं करती है। पहली बार जब आप वरीयता बदलते हैं, तो यह अपेक्षा के अनुसार काम करता है। लेकिन बाद में यह छोड़ देता है।

क्या किसी के पास कोई संकेत है कि यहां क्या हो रहा है?

उत्तर

10

अजीब, लेकिन एक समाधान मिला। ऐसा लगता है कि एंड्रॉइड आपके द्वारा अद्यतन विधि में उपयोग किए जाने वाले इरादे को कैशिंग कर रहा है। यदि आप वही इरादा रखते हैं जो एक ही इरादा है, तो ऐसा नहीं होगा जैसा आप उम्मीद करेंगे।

समाधान: एक स्थैतिक पुनरावृत्ति पूर्णांक है जिसे आप इरादे अतिरिक्त में एक param के रूप में शामिल करते हैं। यह मेरे लिए समस्या हल हो गई।

Intent intent = new Intent(context, WidgetService.class); 
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, currentWidgetId); 
intent.putExtra("random", randomNumber); 
randomNumber++; 
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME))); 

ओह, एंड्रॉयड ...

+0

HI जेएमआरबोस्टीज़। क्या आप अपना कोड साझा करने के लिए बहुत दयालु होंगे? मैं होमस्क्रीन विजेट में लिस्ट व्यू डालने की कोशिश भी कर रहा हूं और कुछ बटनों के साथ एक हेडर जोड़ रहा हूं (जो सूची डेटा द्वारा कौन सा डेटा सेट प्रदर्शित होता है) बदल सकता है। मैं हेडर बटन पर क्लिक पंजीकृत करने और सूचीदृश्य अपडेट करने में कठिनाइयों को हल कर रहा हूं। Txs – Hubert

+1

ऐसा लगता है कि सभी अपडेट्स के लिए ऐसा होता है - अंततः एंड्रॉइड ऊब जाता है और मानता है कि आपके पास सही परिणाम हैं:/धन्यवाद @ जेएमआरबोस्टीज़ :) – Graeme

+0

यह अपग्रेड करते समय काम नहीं करता है और आपका ऐप एक नए संस्करण द्वारा प्रतिस्थापित किया गया है, कोई सुझाव इसे हल करने के लिए? – 2cupsOfTech

1

मैं कुछ समय पहले इस समस्या का सामना करना पड़ा। यादृच्छिक संख्या के साथ इस दृष्टिकोण ने भी मेरी मदद की।

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