【问题标题】:Change Clock Dial Image更改时钟表盘图像
【发布时间】:2012-09-27 14:30:59
【问题描述】:

我正在创建一个用于学习目的的模拟时钟小部件,并且想知道如何进行设置布局以更改时钟表盘图像。我已经完成了小部件,但我似乎无法获得 onclicklstener 来调出设置布局。

这就是我所拥有的:

@Override
public void onDeleted(Context  context, int[] appWidgetIds) 
{super.onDeleted(context, appWidgetIds);
}

@Override
public void onDisabled(Context  context) {
        super.onDisabled(context);
        }

@Override
public void onReceive(Context context, Intent intent)
{
    String action = intent.getAction();
    if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action))
    {

        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);

        Intent AlarmClockIntent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.android.alarmclock", "com.android.alarmclock.AlarmClock"));
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, AlarmClockIntent, 0);
        views.setOnClickPendingIntent(R.id.Widget, pendingIntent);

        AppWidgetManager.getInstance(context).updateAppWidget(intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), views);
    }
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
    int[] appWidgetIds) 
{
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.settings);
        Intent launchActivity = new Intent(context,Widget.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context,0, launchActivity, 0);
        updateViews.setOnClickPendingIntent(R.id.Widget, pendingIntent);
        ComponentName myComponentName = new ComponentName(context, Settings.class);
        AppWidgetManager manager = AppWidgetManager.getInstance(context);
        manager.updateAppWidget(myComponentName, updateViews);
}

}

【问题讨论】:

  • “不知道从哪里开始”总是会让你投反对票,你需要给我们更多的合作机会。
  • 我已经用更多信息更新了 OP
  • 是的,我已经删除了我的反对票 :)

标签: java android eclipse widget settings


【解决方案1】:

这个问题又被问到了here

对于未来的访客:

将确保设置PendingIntent 的代码放入onUpdate() 方法中。这样可以确保将小部件放在主屏幕上后,PendingIntent 就会被设置。

所以:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgets) {
    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_activity);
    Intent intent = new Intent(context, Info.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
    remoteViews.setOnClickPendingIntent(R.id.Widget, pendingIntent);

还有:

如果您还希望在首次将小部件添加到主屏幕时自动弹出信息Activity,您应该阅读this userful piece of information

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2012-11-02
    • 2013-09-17
    • 1970-01-01
    相关资源
    最近更新 更多