2012-01-11 8 views
2

こんにちは、私はウィジェットのプログラミングに新しいです、そして、これは本当に狂ってしまいます! 私は希望をもたずにこれを解決しようとしてきました。私は多くの例を見つけました。私はシミュレータと実際の電話機の両方でテストしました。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は動作しません。作成し、任意のアイデアは?

答えて

2

私が活動にウィジェットを更新するのと同じ問題を抱えていた。以下のトピックでdave.cの答えをチェックしてください。彼のupdateAllWidgets機能は、この問題でのライフセーバーの答えです。

android appwidget won't update from activity

関連する問題