2012-01-10 53 views
1

我开发了一个Android小部件,目的是点击文本小部件的图标被更改。要做到这一点,我设置了动作,并尝试了OnReceive方法。这是代码:
关于onReceive方法 - 小部件的更改图标Android

@Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(ACTION_WIDGET_NOTIF)) { 
      Bundle extras = intent.getExtras(); 
      int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID); 
      RemoteViews controles = new RemoteViews(context.getPackageName(), 
        R.layout.widgetcuatroxuno); 
      controles.setImageViewResource(R.id.btt, 
        R.drawable.ic_launcher_new); 
      AppWidgetManager.getInstance(context).updateAppWidget(appWidgetId, controles); 
     } else { 
      super.onReceive(context, intent); 
     } 

    } 

我知道我需要AppWidgetManager更新Widget控件,但是失败了。我如何才能实现我的目标?对不起我的英语不好。非常感谢你所做的一切。

+0


如果有人有同样的问题,我发现了解决方案: @Override \t公共无效的onReceive(上下文范围内,意图意图){ \t \t RemoteViews控制=新RemoteViews(context.getPackageName(), \t \t \t \t R.layout.widget); \t \t如果(intent.getAction()等于(ACTION_WIDGET_CHANGE)。){ \t \t \t control.setImageViewResource(R.id.bttn, \t \t \t \t \t R.drawable.ic_launcher_new); \t \t} else { \t \t \t super.onReceive(context,intent); \t \t} \t \t ComponentName cn = new ComponentName(context,Widget.class); \t \t AppWidgetManager.getInstance(context).updateAppWidget(cn,control); \t} – 2012-01-10 11:29:46

回答

3
RemoteViews control = new RemoteViews(context.getPackageName(), 
        R.layout.widget); 
      control.setTextViewText(R.id.textview1, "ExampleText"); 

      ComponentName cn = new ComponentName(context, 
        ButtonWidget.class); 
      AppWidgetManager.getInstance(context).updateAppWidget(cn, 
        control); 

这一个在OnReceive()工作,非常感谢!

+0

该解决方案确实工作得很好。 – 2012-07-14 17:55:36