android小部件点击事件

时间:2015-08-19 11:53:15

标签: android widget android-appwidget

我正在尝试创建创建WiFi热点的应用小部件,我对点击事件有疑问。

我有按钮,我无法使用onclicklistener。 我在google和这里搜索过,我知道我需要将Intent发送给其他分析它的类,但我对此有疑问。

这是我的MainActivity代码: http://pastebin.com/pjhLkXGh

这是我的wifiWidget代码: http://pastebin.com/4NyT3U5u

我的xml文件是: http://pastebin.com/9cUuRLbB

非常感谢!

1 个答案:

答案 0 :(得分:0)

通过使用对象而不是PendingIntents,开发人员可以更轻松地使用小部件来处理这些小部件。如果你是第一次编码它可能会非常棘手。

public class MyWidgetProvider extends AppWidgetProvider {

 public static String WIDGET_BUTTON = "com.anbe.turboandroid.WIDGET_BUTTON";
 private static final String SYNC_CLICKED    = "automaticWidgetSyncButtonClick";

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        RemoteViews remoteViews;

        ComponentName watchWidget;

        remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
        watchWidget = new ComponentName(context, MyWidgetProvider.class);

        remoteViews.setOnClickPendingIntent(R.id.Cache, getPendingSelfIntent(context, SYNC_CLICKED));
        appWidgetManager.updateAppWidget(watchWidget, remoteViews);
    }

    @Override
    public void onReceive(final Context context, Intent intent) {
        // TODO Auto-generated method stub
        super.onReceive(context, intent);

        if (SYNC_CLICKED.equals(intent.getAction())) {

            AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);

            final RemoteViews remoteViews;
            ComponentName watchWidget;

            remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
            watchWidget = new ComponentName(context, MyWidgetProvider.class);                

            appWidgetManager.updateAppWidget(watchWidget, remoteViews);

            // DO SOME STUFF HERE

            }
        }

    protected PendingIntent getPendingSelfIntent(Context context, String action) {
        Intent intent = new Intent(context, getClass());
        intent.setAction(action);
        return PendingIntent.getBroadcast(context, 0, intent, 0);
    }
}

您可以在注释部分编写任务。

干杯   加布里埃尔