我对制作 Android 应用程序真的很陌生;只是试图制作一个简单的小部件来告诉时间。如果您单击它,该小部件还将打开一个基本活动。Widget 和 Activity 位于 2 个不同的项目文件中(在同一个工作区中),因此我必须将 Activity 包导入以访问其类。
完整代码:
public class FirstWidget extends AppWidgetProvider {
RemoteViews view = null;
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
view = new RemoteViews(context.getPackageName(), R.layout.main);
view.setOnClickPendingIntent(R.id.widget_textview, pendingIntent);
appWidgetManager.updateAppWidget(new ComponentName(context, FirstWidget.class), view);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 1000);
}
private class MyTime extends TimerTask {
AppWidgetManager appWidgetManager;
ComponentName thisWidget;
DateFormat format = SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM, Locale.getDefault());
public MyTime(Context context, AppWidgetManager appWidgetManager) {
this.appWidgetManager = appWidgetManager;
thisWidget = new ComponentName(context, FirstWidget.class);
}
public void run() {
Calendar cal = format.getCalendar();
int day = cal.get(Calendar.DAY_OF_WEEK);
switch (day) {
case(2):
view.setTextViewText(R.id.widget_textview, "MONDAY TIP " + format.format(new Date()));
break;
case(3):
view.setTextViewText(R.id.widget_textview, "TUESDAY TIP " + format.format(new Date()));
break;
case(4):
view.setTextViewText(R.id.widget_textview, "WEDNESDAY TIP " + format.format(new Date()));
break;
case(5):
view.setTextViewText(R.id.widget_textview, "THURSDAY TIP " + format.format(new Date()));
break;
case(6):
view.setTextViewText(R.id.widget_textview, "FRIDAY TIP " + format.format(new Date()));
break;
case(7):
view.setTextViewText(R.id.widget_textview, "SATURDAY TIP " + format.format(new Date()));
break;
case(1):
view.setTextViewText(R.id.widget_textview, "SUNDAY TIP " + format.format(new Date()));
break;
}
appWidgetManager.updateAppWidget(thisWidget, view);
}
}
}
我在 Eclipse 中将 Activity 设为库,并通过 Properties->Android->Library 将其同步到 Widget。还通过 Properties->JAva Build Path->Activity Package 将 Activity 添加到 Widget 的 Java Build 路径。
当我将小部件导入模拟器时,小部件和应用程序都会下载。我也可以将两者都带到前面的屏幕上。该应用程序按预期工作(单击按钮,转到屏幕)。小部件每秒更新其时间和日期。
但是点击小部件什么也没做。
5 个小时以来一直在看不同的教程。没有看到我做错了什么。任何帮助都会很棒