私は 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);
}
}
}
Activity を Eclipse のライブラリにし、[プロパティ] -> [Android] -> [ライブラリ] を介してウィジェットに同期しました。また、[プロパティ] -> [JAva ビルド パス] -> [アクティビティ パッケージ] を介して、アクティビティをウィジェットの Java ビルド パスに追加しました。
ウィジェットを emultaor にインポートすると、ウィジェットとアプリの両方がダウンロードされます。両方をフロントスクリーンに持ってくることもできます。アプリは意図したとおりに動作します (ボタンをクリックして画面に移動します)。ウィジェットは、その時刻と曜日を毎秒更新します。
しかし、ウィジェットをクリックしても何も起こりません。
現在、5 時間にわたってさまざまなチュートリアルを見ています。私が間違っていることを見ていない。どんな助けでも素晴らしいでしょう