こんにちは、私はウィジェットのプログラミングに新しいです、そして、これは本当に狂ってしまいます! 私は希望をもたずにこれを解決しようとしてきました。私は多くの例を見つけました。私はシミュレータと実際の電話機の両方でテストしました。Android 2.2アップデートウィジェットは私のためにはうまくいかない
スクリプトもここstackoverflowの中、私はどこかに私の活動で、その後にonUpdate
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
// Perform this loop procedure for each App Widget that belongs to this provider
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
// Create some random data
int number = (new Random().nextInt(100));
Log.v("Provider", "called");
// Get the layout for the App Widget and attach an on-click listener
// to the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgetlayout);
views.setTextViewText(R.id.textViewwid, String.valueOf(number));
// Create an Intent to launch ExampleActivity
Intent intent = new Intent(context, HelloAndroidActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.textViewwid, pendingIntent);
// Tell the AppWidgetManager to perform an update on the current app widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
で小さなスクリプトを持って、私はどこでも見つけた同じ単純ですが、私はウィジェット
を更新したいですLog.v("Response", "my activity lunched");
// Find widget id from launching intent
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
// If they gave us an intent without the widget id, just bail.
if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
Log.v("Response", "no appwidget id provided");
finish();
}
//configureWidget(getApplicationContext());
Log.v("Response", "appwidget id is provided!!");
// Make sure we pass back the original appWidgetId before closing the activity
Intent resultValue = new Intent(this, WidgetProvider.class);
//resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
resultValue.setAction("android.appwidget.action.APPWIDGET_UPDATE");
int[] ids = {mAppWidgetId};
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids);
sendBroadcast(resultValue);
コードがこのように動作している必要があります。ウィジェットをクリックすると、アクティビティが起動し、アクティビティがonUpdate関数を呼び出してウィジェットを更新しますが、ウィジェットは更新されません。
奇妙なのは、私がウィジェットをクリックするたびにlog.v( "provider"、 "called"が表示されるので、onupdateが呼び出されていることを確信していますが、settextviewtext
は動作しません。作成し、任意のアイデアは?