无法在 RemoteView Android 上更改 ImageView 资源

Posted

技术标签:

【中文标题】无法在 RemoteView Android 上更改 ImageView 资源【英文标题】:Cant change ImageView resource on RemoteView Android 【发布时间】:2012-06-21 11:21:17 【问题描述】:

我正在尝试制作一个带有可点击图像的简单小部件,当点击它时它会发生变化。 我不明白为什么它不起作用

   public class AppWidget extends AppWidgetProvider 

@Override
public void onReceive(Context context, Intent intent) 
if (intent.getAction()==null) 
    context.startService(new Intent(context,
            ToggleService.class));

 else 
super.onReceive(context, intent);



@Override
public void onUpdate(Context context, AppWidgetManager
appWidgetManager, int[] appWidgetIds) 
    context.startService(new Intent(context, 
            ToggleService.class)); 


public static class ToggleService extends IntentService  
    public ToggleService()  
        super("AppWidget$ToggleService");
    
    @Override
    protected void onHandleIntent(Intent intent) 
    ComponentName me=new ComponentName(this, AppWidget.class);
    AppWidgetManager mgr=AppWidgetManager.getInstance(this);
    mgr.updateAppWidget(me, buildUpdate(this));
    
    private RemoteViews buildUpdate(Context context) 
    RemoteViews updateViews=new
    RemoteViews(context.getPackageName(),R.layout.widget);
    int a = 1;
    if(a ==
            1) 

            updateViews.setImageViewResource(R.id.phoneState,
            R.drawable.dual_off);
     else 
    updateViews.setImageViewResource(R.id.phoneState,
    R.drawable.dual_on);
    
    Intent i=new Intent(this, AppWidget.class);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, i,0); 
    updateViews.setOnClickPendingIntent(R.id.phoneState,pi); 
    return updateViews; 
    





 

我在 for 循环中尝试了各种方法,但它不会改变图像。 我是从一本关于 android 开发的书中完成的,对 java 和 android 很陌生。

【问题讨论】:

【参考方案1】:

您将通过 AppWidgetManagerafter 更改 remoteview 的源来更新您的小部件。在这个 sn-p 代码中,我尝试更改小部件的布局,它的 AppWidgetProvider 名称是 DictionWidgetProvider强>:

private void hideWidgetInstances() 
    hideViews = new RemoteViews(App.getContext().getPackageName(),
    R.layout.hide);
    AppWidgetManager mManager = AppWidgetManager.getInstance(App
    .getContext());
    ComponentName cn = new ComponentName(App.getContext(),
    DictionWidgetProvider.class);
    mManager.updateAppWidget(cn, hideViews);

这里的App是一个扩展Application的类。你可以使用Application Context来访问ComponentName

【讨论】:

以上是关于无法在 RemoteView Android 上更改 ImageView 资源的主要内容,如果未能解决你的问题,请参考以下文章

如何在android通知中增加remoteview的高度

Android-Widget:使用 RemoteView 更改 ListView 选择器颜色

如何为自定义 Android 通知添加垂直线到 RemoteView?

TextView不会滚动RemoteView

通过 remoteview Android 更新小部件

RemoteView 和 setGravity