2010-11-27 23 views
3

je le AppWidgetProvider extrêmement simple pour un widget de test:android TextView.setText ne fonctionne pas sur simple widget

public class Test extends AppWidgetProvider { 

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ 
     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.test_layout); 
     views.setTextViewText(R.id.TextView01, "Test message"); 
    } 

} 

Le test_layout ressemble à ceci:

<LinearLayout 
    android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <TextView 
     android:id="@+id/TextView01" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
    </TextView> 
</LinearLayout> 

Le problème est que la Le widget apparaît dans l'écran de l'émulateur mais sans aucun texte. Je suis sûr que je suis en train de déconner quelque chose mais je ne peux pas trouver ce que c'est ...

Répondre

9

Vous avez oublié de configurer les RemoteViews à utiliser. Votre code pour AppWidgetProvider devrait être ceci:

 

public class Test extends AppWidgetProvider { 

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ 
     super.onUpdate(context, appWidgetManager, appWidgetIds); 
     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.test_layout); 
     views.setTextViewText(R.id.TextView01, "Test message"); 
     appWidgetManager.updateAppWidget(appWidgetIds, views); 
    } 

} 
 
+0

Merci! Il fonctionne –

+0

Merci. J'ai fait la même erreur aussi. En outre, dans votre méthode onUpdate, vous devez remettre super.onUpdate (context, appWidgetManager, appWidgetIds); à la première ligne. – yancyn

+0

@yancyn merci. J'ai mis à jour la réponse. – Raunak