मैं एंड्रॉइड के लिए नोब हूं और मुझे एक एपविजेट अपडेट करने में समस्याएं आ रही हैं। यह एक समाचार विजेट है जो प्रत्येक 20 सेकंड में अलग-अलग पाठ प्रदर्शित करता है। जब विजेट प्रारंभ होता है तो मुझे & को ठीक से प्रदर्शित करने के लिए पाठ प्राप्त करने में कोई समस्या नहीं है। हालांकि, विजेट के हर 30 मिनट के अपडेट के बाद मेरी widgetID int सरणी उस int को बरकरार रखती है जो अद्यतन से पहले मौजूद थी। तो प्रत्येक अद्यतन के बाद विजेट पुराने डेटा और नए डेटा दिखाता है। अद्यतन प्रक्रिया के दौरान पुराने डेटा की विजेट आईडी int सरणी को साफ़ करने के लिए कोई है। कोई भी मदद बहुत ही सराहनीय होगी।मैं ऐपविड्ज को उचित रूप से अपडेट कैसे करूं?
मेरे कोड: विजेट में पाठ स्विच करने के लिए
allWidgetIds2 = appWidgetManager.getAppWidgetIds(thisWidget);
विधि। यह शुरू में ठीक काम करता है, लेकिन अद्यतन के बाद नए डेटा के साथ पुराने डेटा से पता चलता ...
public void updateStory() {
tickerheadline = RssReader.rssheadline.get(storyCounter);
tickerstory = RssReader.rssstory.get(storyCounter);
remoteViews.setTextViewText(R.id.headline, tickerheadline);
remoteViews.setTextViewText(R.id.story, tickerstory);
if (storyCounter==RssReader.rssheadline.size()-1){
storyCounter = 0;
storyCounter++;
}else{
storyCounter++;
}
appWidgetManager.updateAppWidget(allWidgetIds, remoteViews);
//Log.e("Widget", allWidgetIds.toString());
mHandler.postDelayed(new Runnable() {
public void run() {
updateStory();
} } ,20000); }
}
संपादित
public void updateStory() {
//Added
appWidgetManager = AppWidgetManager.getInstance(this.getApplicationContext());
ComponentName thisWidget = new ComponentName(getApplicationContext(),MyWidgetProvider.class);
remoteViews = new RemoteViews(this.getApplicationContext().getPackageName(),R.layout.widget1);
tickerheadline = RssReader.rssheadline.get(storyCounter);
tickerstory = RssReader.rssstory.get(storyCounter);
remoteViews.setTextViewText(R.id.headline, tickerheadline);
remoteViews.setTextViewText(R.id.story, tickerstory);
if (storyCounter==RssReader.rssheadline.size()-1){
storyCounter = 0;
storyCounter++;
}else{
storyCounter++;
}
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
//appWidgetManager.updateAppWidget(allWidgetIds, remoteViews);
//Log.e("Widget", allWidgetIds.toString());
mHandler.postDelayed(new Runnable() {
public void run() {
updateStory();
} } ,20000); }
}
शायद अगर आप और {StoryCounter ++ सेट करते हैं; } कहानी के लिए = 0; चाल करेगा। – k0sh
जवाब देने के लिए धन्यवाद। यह पिछले विजेटिड के डेटा को प्रदर्शित होने से कैसे रोक देगा? –
मैंने पहले कभी विगेट्स के साथ काम नहीं किया लेकिन मैं बिटमैप्स के साथ बहुत काम करता हूं। और जब मैं कुछ बिटमैप को रीसेट करना चाहता हूं तो मैं bmp = null को कॉल करूंगा; मुझे यकीन नहीं है कि आप वहां क्या करने की कोशिश कर रहे हैं। लेकिन आप कहानी काउंटर ++ को बुला रहे हैं; जब कहानी काउंटर = 0; और आपके अन्य कथन में। जिसका मतलब है कि आपने अपनी कहानी को मंजूरी दे दी है काउंटर = 0; और फिर आपने कहानी काउंटर ++ कहा; तुम ऐसा क्यों करोगे ? तर्कसंगत रूप से आपके अगर किसी अन्य कथन में आपको अलग-अलग चीजें करना है लेकिन आप में आप दो बार एक ही काम कर रहे हैं। – k0sh