2013-08-28 24 views
0

我創建了一個類,用於從互聯網下載一些文本,並且我想在該小部件中使用該文本並更新TextView。我知道事件(OnDownloadCompleteListener)正在被觸發,因爲我正在記錄它,但我無法弄清楚如何從該事件中更新TextView。我知道這是一個新手的錯誤,只是不知道我錯過了什麼。在事件中更新小部件中的文本

public class Widget extends AppWidgetProvider{ 

     InternetText internettext; //Handles downloading the text from the internet 
     RemoteViews views; 

     public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
      final int N = appWidgetIds.length; 

      // Perform this loop procedure for each App Widget that belongs to this provider 
      for (int i=0; i<N; i++) { 
       int appWidgetId = appWidgetIds[i]; 

       // Create an Intent to launch ExampleActivity 
       Intent intent = new Intent(context, MainActivity.class); 
       PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 

       // Get the layout for the App Widget and attach an on-click listener 
       // to the button 
       views = new RemoteViews(context.getPackageName(), R.layout.widget); 
       views.setOnClickPendingIntent(R.id.tvWidgetVerse, pendingIntent); 

       internettext = new InternetText(context); 
       internettext.setOnDownloadCompleteListener(new OnDownloadCompleteListener() { 

        @Override 
        public void onEvent() { 
         TheText thetext = internettext.downloadedText(); //The text object 
         Log.i("", "Widget Text Downloaded " + thetext.getText()); //This fires so I know we've downloaded the text 
         TextStyling textStyle = new TextStyling(); 



//*****THIS IS WHERE I'M HAVING THE PROBLEM******** 
         views.setTextViewText(R.id.tvWidgetText, Html.fromHtml(textStyle.boldWords(thetext.getText()))); //this never updates 
        } 
       }); 


       internettext.getText(); 

       // Tell the AppWidgetManager to perform an update on the current app widget 
       appWidgetManager.updateAppWidget(appWidgetId, views); 
      } 
     } 

    } 
+0

不thetext.getText()在日誌中返回結果時運行應用程序? – TheHamstring

+0

是的。除了將文本設置爲textview之外,所有內容都應如其行。沒有錯誤被拋出。 – bwoogie

回答

0

好的,我想通了。我必須在活動中致電appWidgetManager.updateAppWidget()。我知道這是一個沒有腦子...

appWidgetManager.updateAppWidget(appWidgetId, views); 

這也意味着我必須做出appWidgetManager和appWidgetId final

public void onUpdate(Context context, final AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
... 
}