Android使用小部件中的视图

时间:2014-02-04 15:11:22

标签: android android-widget

我正在尝试为我的应用制作一个小部件,我希望它可以使用一个buttonm进度条和文本视图,稍后会更改,所以我需要以某种方式处理视图本身,就像我可以从活动,显示视图,隐藏视图,更改按钮背景等... 我尝试使用Android文档中的示例代码进行调整,但我只能使用此

启动活动
public class WidgetProvider extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        final int N = appWidgetIds.length;
        for (int i = 0; i < N; i++) {
            int appWidgetId = appWidgetIds[i];
            Intent intent = new Intent(context, ActivityMain.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);          
            views.setOnClickPendingIntent(R.id.sync_button, pendingIntent);
            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
    }

}

是否需要将小部件连接到活动才能进行操作(连接到Internet,写入数据库,写入应用程序实例的对象(如果有))?我可以按照我的要求处理观点吗?

1 个答案:

答案 0 :(得分:0)

除了在视图上点击PendingIntent设置外,您在窗口小部件内部无法做到。标准配方是:

  1. 制作一个PendingIntent发送广播(PendingIntent.getBroadcast())并将其设置在您的小部件中的相应视图中。
  2. 在收到意图的BroadcastReceiver中,您更新窗口小部件以显示微调器并启动服务以执行您想要执行的任何长时间运行的工作(例如,连接到Internet)。
  3. 完成该工作后,您可以再次更新窗口小部件并删除微调器。