Sono un noob per Android e sto riscontrando problemi nell'aggiornare un appwidget. È un widget di notizie che visualizza testo diverso ogni 20 secondi. Non ho problemi a visualizzare correttamente il testo per lo & quando il widget è inizializzato. Tuttavia, dopo ogni aggiornamento di 30 minuti del widget, il mio widgetID int array mantiene l'int esistente prima dell'aggiornamento. Quindi dopo ogni aggiornamento il widget mostra vecchi dati e nuovi dati. Esiste una soluzione per cancellare l'array ID int dei vecchi dati durante il processo di aggiornamento. Qualsiasi aiuto è molto apprezzato.Come aggiorno correttamente AppWidget?
My Code:
allWidgetIds2 = appWidgetManager.getAppWidgetIds(thisWidget);
Metodo per la commutazione testo in gadget. Questo funziona bene inizialmente, ma dopo l'aggiornamento mostra i vecchi dati insieme con i nuovi dati ...
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); }
}
EDIT
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); }
}
forse se si imposta else {storyCounter ++; } a storyConter = 0; farà il trucco. – k0sh
Grazie per la risposta. Come impedirebbe la visualizzazione dei dati del widgetid precedente? –
Non ho mai lavorato con i widget prima, ma lavoro molto con le bitmap. e quando voglio resettare certe bitmap chiamerò bmp = null; non sono sicuro di cosa stai cercando di fare lassù. ma tu chiami storyCounter ++; quando storyCounter = 0; e nella tua altra dichiarazione. il che significa che hai eliminato la tua storyCounter = 0; e poi hai chiamato storyCounter ++; Perché dovresti farlo ? logicamente nella tua dichiarazione if else devi fare cose diverse ma nel tuo stai facendo la stessa cosa due volte. – k0sh