나는 안드로이드에 대한 멍청한 놈이야. 그리고 나는 appwidget을 업데이트하는 데 문제가있다. 그것은 20 초마다 다른 텍스트를 표시하는 뉴스 위젯입니다. 위젯이 초기화 될 때 & 디스플레이가 올바르게 표시되도록 텍스트를 가져 오는 데 아무런 문제가 없습니다. 그러나 매 30 분마다 위젯을 업데이트 한 후에 내 widgetID int 배열은 업데이트 이전에 존재 한 int를 유지합니다. 따라서 각 업데이트 후에 위젯은 이전 데이터와 새 데이터를 표시합니다. 업데이트 프로세스 중에 이전 데이터의 위젯 ID int 배열을 삭제할 수 있습니까? 어떤 도움이라도 대단히 감사합니다.AppWidget을 올바르게 업데이트하려면 어떻게해야합니까?
내 코드 : 위젯에 텍스트를 전환
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); }
}
어쩌면 else {storyCounter ++; } to storyConter = 0; 속임수를 쓸 것이다. – k0sh
응답 해 주셔서 감사합니다. 이전 widgetid의 데이터가 어떻게 표시되지 않습니까? –
이전에는 위젯을 사용 해보지 않았지만 비트 맵을 많이 사용합니다. 그리고 내가 특정 비트 맵을 재설정하고 싶다면 bmp = null을 호출 할 것이다; 나는 너가 무엇을하려고하는지 잘 모르겠다. 하지만 당신은 storyCounter ++라고 부릅니다. when storyCounter = 0; 그리고 당신의 성명서에. 즉 당신의 이야기를 지웠다는 것을 의미합니다. 카운터 = 0; 그리고 당신은 storyCounter ++라고 불렀습니다. 왜 그럴거야? 논리적으로 당신이 다른 진술에 당신은 다른 일을해야하지만 당신의 경우에는 똑같은 일을 두 번하고 있습니다. – k0sh