2012-09-15 79 views
0

我正在構建一個主屏幕小部件,我的目標是在此小部件的ImageView上設置圖像,並使用setImageViewResource()來實現此目的。和它完美的作品 - 意味着onStart()被執行後的目標圖像R.id.user_button改變其圖像資源R.drawable.activity_notification - 如果我用這樣的:如果在外部函數中初始化,setImageViewResource不起作用

public class UpdateWidgetService extends Service { 
    public void onStart(Intent intent, int startId) { 
     ... //Some code which is not really important 
     RemoteViews remoteViews = new RemoteViews(this.getPackageName(),R.layout.widget_layout); 
     remoteViews.setImageViewResource(R.id.user_button, R.drawable.activity_notification); 
    } 
} 

的問題是我已經把setImageViewResource()內的外部功能,當試圖構建類似下面的代碼時拒絕工作 - 意味着在執行onStart()執行後,目標圖像R.id.user_button的圖像資源保持不變。

public class UpdateWidgetService extends Service { 
    public void onStart(Intent intent, int startId) { 
     ... //Some code which is not really important 
     changeImagePicture(); 
    } 
    public void changeImagePicture() { 
     RemoteViews remoteViews = new RemoteViews(this.getPackageName(),R.layout.widget_layout); 
     remoteViews.setImageViewResource(R.id.user_button, R.drawable.activity_notification); 
    } 
} 

我想我是一個noob,我錯過了一些非常簡單和非常重要的事情。你能指點我的錯誤,所以我可以讓我的代碼最後工作;) Merci beaucoup!

+0

你說你改變它在外部類,但你是顯示的方法( changeImagePicture)在您的UpdateWidgetService類中。是這種方法還是外部類?請同時解釋發生了什麼。什麼「拒絕工作」是什麼意思? – Simon

+0

@Simon你絕對正確,我只是搞砸了這個_classes/functions_的定義。我試圖通過在'public void onStart()'之外聲明'public void changedImagePicture()'來改變ImageResource,現在它不能正常工作。我已經更新了我的問題,並且強調了應該發生的事情以及實際發生的事情。請檢查。如果你需要更多的澄清,請讓我知道。 – LoomyBear

+0

好的,這有幫助嗎? http://stackoverflow.com/questions/4433464/settextviewtext-not-updating-widget – Simon

回答

3

您需要使用AppWidgetManager類的updateAppWidget方法:

AppWidgetManager manager = AppWidgetManager.getInstance(context); 
manager.updateAppWidget(thisWidget, remoteViews); 

好運....

+0

工程就像一個魅力!謝謝! ;) – LoomyBear