私はアンドロイドの初心者で、appwidget の更新に問題があります。20 秒ごとに異なるテキストを表示するニュース ウィジェットです。ウィジェットの初期化時に、テキストを適切に切り替えて表示するのに問題はありません。ただし、ウィジェットを 30 分更新するたびに、widgetID int 配列は更新前に存在していた int を保持します。したがって、各更新の後、ウィジェットには古いデータと新しいデータが表示されます。更新プロセス中に古いデータのウィジェット ID 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); }
}