Android: How to update widget text on creation(Android:如何在创建时更新小部件文本)
问题描述
我看到了几个关于如何更新小部件的问题,但没有什么能帮助我解决我的问题.
I have seen several questions regarding how to update widgets but nothing is helping me with my issue.
我创建了一个具有文本视图的小部件,我希望在创建小部件时动态更新它.我有一个在屏幕上添加小部件时调用的配置活动.我将值存储在 sharedpreferences 中并在更新时检索它.问题是小部件没有得到更新.知道怎么做吗?我不想在单击小部件后更新文本视图,只需在创建时显示正确的文本.
I created a widget that has a textview that I want to dynamically update upon widget creation. I have a configuration activity that is called when adding the widget on the screen. I store the value in the sharedpreferences and retreive it onUpdate. The problem is that the widget doesn't get updated. Any idea how it can be done? I do not want to update the textview after a click on the widget, just get the correct text to be displayed on creation.
public class AndroidWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    ComponentName thisWidget = new ComponentName(context,
            AndroidWidget.class);
    int[] allWidgetInstancesIds = appWidgetManager
            .getAppWidgetIds(thisWidget);
    for (int widgetId : allWidgetInstancesIds) {
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                R.layout.widget_layout);
        // Create an intent that when received will launch the PopUpActivity
        Intent intent = new Intent(context, AndroidWidget.class);
        intent.setAction(SHOW_POPUP_DIALOG_ACTION);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
                widgetId, intent, 0);
        // Set up the onClickListener of the widget
        remoteViews.setOnClickPendingIntent(R.id.myText, pendingIntent);
        SharedPreferences prefs = context.getSharedPreferences(
                String.valueOf(widgetId), Context.MODE_PRIVATE);
        remoteViews.setTextViewText(R.id.myText,
                prefs.getString("storedtext", null));
        appWidgetManager.updateAppWidget(widgetId, remoteViews);
    }
    super.onUpdate(context, appWidgetManager, appWidgetIds);
}
这实际上会更新文本视图,但仅在单击或创建另一个小部件之后.
This actually updates the textview but only after clicking or creating another widget.
推荐答案
@Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        //set widget id
        ComponentName thisWidget = new ComponentName(context, WidgetProvider.class);
        int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
        for (int i = 0; i < appWidgetIds.length; i++) {
            Intent intentService = new Intent(context, WidgetService.class);
            intentService.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
            intentService.setData(Uri.parse(intentService.toUri(Intent.URI_INTENT_SCHEME)));
            RemoteViews widget = new RemoteViews(context.getPackageName(), R.layout.widget);
            Intent clickIntent = new Intent(context, MainActivity.class);
            PendingIntent clickPI = PendingIntent.getActivity(context, 0, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
            widget.setTextViewText(R.id.currency, " Dollar");
            appWidgetManager.updateAppWidget(appWidgetIds[i], widget);
        }
        super.onUpdate(context, appWidgetManager, appWidgetIds);
    }
此代码对我有用.你可以试试这个.
This code works for me. You may try this.
这篇关于Android:如何在创建时更新小部件文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Android:如何在创建时更新小部件文本
				
        
 
            
        基础教程推荐
- SwiftUI-ScrollViewReader的ScrollTo不滚动 2022-01-01
 - navigationItem.backBarButtonItem 不工作?为什么上一个菜单仍然显示为按钮? 2022-01-01
 - 如何比较两个 NSDate:哪个是最近的? 2022-01-01
 - iOS - UINavigationController 添加多个正确的项目? 2022-01-01
 - 如何将图像从一项活动发送到另一项活动? 2022-01-01
 - Play 商店的设备兼容性问题 2022-01-01
 - Xcode UIView.init(frame:) 只能在主线程中使用 2022-01-01
 - UIImage 在开始时不适合 UIScrollView 2022-01-01
 - Android Volley - 如何动画图像加载? 2022-01-01
 - 为什么姜饼模拟器方向卡在应用程序中? 2022-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
				
				
				
				