Android 如何处理窗口小部件按钮

Android 如何处理窗口小部件按钮,android,android-widget,android-intent,remoteview,Android,Android Widget,Android Intent,Remoteview,我从widget开始,在互联网上得到了一个非常好的教程,这个例子运行得很好,但是当我试图改变一些东西时,我被卡住了 问题是:我只想在按下imageButton时更改图像,我尝试了一些方法,但似乎没有任何效果。我不知道RemoteView和Intent是如何工作的。因此,如果有人能很快解释,我将不胜感激=) 代码如下: public class HelloWidget extends AppWidgetProvider { private ImageButton wifi; pub

我从widget开始,在互联网上得到了一个非常好的教程,这个例子运行得很好,但是当我试图改变一些东西时,我被卡住了

问题是:我只想在按下imageButton时更改图像,我尝试了一些方法,但似乎没有任何效果。我不知道RemoteView和Intent是如何工作的。因此,如果有人能很快解释,我将不胜感激=)

代码如下:

public class HelloWidget extends AppWidgetProvider {
    private ImageButton wifi;
    public static String ACTION_WIDGET_CONFIGURE = "ConfigureWidget";
    public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
        Intent configIntent = new Intent(context, ClickOneActivity.class);
        configIntent.setAction(ACTION_WIDGET_CONFIGURE);
        Intent active = new Intent(context, HelloWidget.class);
        active.setAction(ACTION_WIDGET_RECEIVER);
        PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
        PendingIntent configPendingIntent = PendingIntent.getActivity(context,  0, configIntent, 0);
        remoteViews.setOnClickPendingIntent(R.id.button_wifi, actionPendingIntent);
        remoteViews.setOnClickPendingIntent(R.id.button_two, configPendingIntent);
        appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        // v1.5 fix that doesn't call onDelete Action
        final String action = intent.getAction();
        if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
            final int appWidgetId = intent.getExtras().getInt(
               AppWidgetManager.EXTRA_APPWIDGET_ID, 
               AppWidgetManager.INVALID_APPWIDGET_ID);

            if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
                this.onDeleted(context, new int[] { appWidgetId });
            }

        } else {
            // check, if our Action was called
            if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
                Toast.makeText(context, "Teste", Toast.LENGTH_LONG).show();
                RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
                remoteViews.setInt(R.id.button_wifi, "toogleOnOff", R.drawable.icon);

            }
            super.onReceive(context, intent);
        }

    }
}
我有很多教程代码,你可以看到=p


Thx从现在起

看起来您需要进一步了解RemoteView。在RemoteView对象上调用setOnClickPendingContent、setInt等函数时,它基本上只在内部存储这些操作和参数。然后,当小部件显示时,它只是回放这些操作以构建小部件的视图。因此,在通过调用UpdateAppWidgetGet将RemoteView提供给AppWidgetManager之后,除非重新生成整个RemoteView并再次调用updateAppWidget,否则不能再次更改它们


作为对问题的回答,您希望使用状态列表作为按钮的背景。有一个很好的例子。

您会遇到什么错误?请提供错误日志。