【问题标题】:Updating text in a widget on an event在事件的小部件中更新文本
【发布时间】:2013-08-28 17:42:54
【问题描述】:

我创建了一个从 Internet 下载一些文本的类,我想获取该文本并在我的小部件中更新 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);
            }
        }

    }

【问题讨论】:

  • 运行应用时,text.getText() 是否在日志中返回结果?
  • 是的。除了将文本设置为 textview 之外,一切正常。也不会抛出任何错误。

标签: android android-widget textview


【解决方案1】:

好的,我想通了。我必须在活动中致电appWidgetManager.updateAppWidget()。我知道这很容易......

appWidgetManager.updateAppWidget(appWidgetId, views);

这也意味着我必须让 appWidgetManager 和 appWidgetId final

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 2021-01-22
    相关资源
    最近更新 更多