2010-05-11 58 views
2

我正在嘗試爲我的應用創建一個小部件,但它沒有更新。 我只需要改變TextView的文本,並打開一個活動時,按一個按鍵,但他們沒有工作......Android - 自定義小工具不更新

代碼:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.newswidget); 
    views.setTextViewText(R.id.tvNews, "prueba1"); 
    views.setString(R.id.tvNews, "setText", "prueba3"); 

    Intent intent = new Intent(context, DoctorChatAndroid.class); 
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 
    views.setOnClickPendingIntent(R.id.ibNext, pendingIntent); 

    for (int i = 0; i < appWidgetIds.length; i++) { 
     appWidgetManager.updateAppWidget(i, views); 
    } 
} 

佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <ImageButton 
     android:id="@+id/ibNext" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@android:drawable/ic_media_ff" 
     android:layout_alignParentRight="true"/> 
    <ImageButton 
     android:id="@+id/ibLast" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@android:drawable/ic_media_rew" 
     android:layout_toLeftOf="@id/ibNext"/> 
    <TextView 
     android:id="@+id/tvNews" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/nwNoNewAnswer" 
     android:layout_toLeftOf="@id/ibLast"/> 

</RelativeLayout> 

其它XML:

<?xml version="1.0" encoding="utf-8"?> 
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:minWidth="294dp" 
    android:minHeight="72dp" 
    android:updatePeriodMillis="3000" 
    android:initialLayout="@layout/newswidget"> 
</appwidget-provider> 

回答

5

你必須在最後一行一個錯字:

appWidgetManager.updateAppWidget(i, views); 

應該

appWidgetManager.updateAppWidget(appWidgetIds[i], views); 

或者更好,但每個循環

for (int i : appWidgetIds) 
    appWidgetManager.updateAppWidget(i, views);