1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

appwidget problemchen beim updaten

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von dakdroid, 02.06.2010.

  1. dakdroid, 02.06.2010 #1
    dakdroid

    dakdroid Threadstarter Junior Mitglied

    Beiträge:
    37
    Erhaltene Danke:
    16
    Registriert seit:
    02.06.2010
    Hallo, mein erster Beitrag!

    Möchte bei meinem appwidget die remoteviews updaten, bekomme es aber nicht gebacken...

    Die Intents funktionieren, ich sehe die "Toasts". name1 wird auch geändert.
    Leider werden die "views" nicht upgedatet,d.h. es wird immer nur als erstes initialisierte name1 angeziegt, was nun ?
    (muss dazu sagen, dass das mein erstes Android Programm ist, vorher nur C++)

    getNamesAndNumbersSortTheseAndSetLayout(context) ändert nur name1;
    Code:
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    			
            // Perform this loop procedure for each App Widget that belongs to this provider
            for (int appWidgetId : appWidgetIds){
               
                super.onUpdate(context, appWidgetManager, appWidgetIds);
                //Funktionen zum ändern der Namen
                getNumberOfContacts(context);
                getNamesAndNumbersSortTheseAndSetLayout(context);
                RemoteViews views=new RemoteViews(context.getPackageName(), R.layout.main);
                views.setTextViewText(R.id.person1name, name1);
                Intent clickintent1=new Intent("dak.android.homecontacts.CLICK1");
                PendingIntent pendingIntentClick1=PendingIntent.getBroadcast(context, 0, clickintent1, 0);
                PendingIntent ;
                appWidgetManager.updateAppWidget(appWidgetId, views); 
    
                }
    }

    Code:
    public void onReceive(Context context, Intent intent){
                super.onReceive(context, intent);
                
                RemoteViews views=new RemoteViews(context.getPackageName(), R.layout.main);
    
    
                if(intent.getAction().equals("dak.android.homecontacts.CLICK6")){
                	getNumberOfContacts(context);
                    getNamesAndNumbersSortTheseAndSetLayout(context);
                    Toast.makeText(context, name1, Toast.LENGTH_SHORT).show();
                	views.setTextViewText(R.id.person1name, name1);
                    }
    }
     
    Zuletzt bearbeitet: 02.06.2010
  2. the_alien, 02.06.2010 #2
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Code:
    AppWidgetManager manager = AppWidgetManager.getInstance(context);
            manager.updateAppWidget(widgetId, view);
    Du musst das Widget noch updaten.
     
  3. dakdroid, 02.06.2010 #3
    dakdroid

    dakdroid Threadstarter Junior Mitglied

    Beiträge:
    37
    Erhaltene Danke:
    16
    Registriert seit:
    02.06.2010
    Habs editiert:
    Das ist beim kopieren wohl nicht mitgekommen.
    Ist unter "onUpdate" mit drinnen. Updated so aber nicht.
    Oder muss das auch noch in onReceive rein ?

    Der komplette Code ist etwas lang. Wie genau name1 geändert wird erspare ich euch.
    name1 hat hier einen neuen Wert welchen ich nicht im widget updaten kann :/
     
    Zuletzt bearbeitet: 02.06.2010
  4. the_alien, 02.06.2010 #4
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Ja das muss in onReceive. Immerhin änderst du da ja den View!
     
  5. dakdroid, 03.06.2010 #5
    dakdroid

    dakdroid Threadstarter Junior Mitglied

    Beiträge:
    37
    Erhaltene Danke:
    16
    Registriert seit:
    02.06.2010
    Edit: so funktionierts in onReceive:

    if(intent.getAction().equals("dak.android.homecontacts.CLICK6")){

    RemoteViews views=new RemoteViews(context.getPackageName(), R.layout.main);
    getNumberOfContacts(context);
    getNamesAndNumbersSortTheseAndSetLayout(context);
    views.setTextViewText(R.id.person2name, name2);
    views.setTextViewText(R.id.person3name, name3);
    ComponentName cn = new ComponentName(context, homeContacts.class);
    AppWidgetManager.getInstance(context).updateAppWidget(cn, views);
     
    Zuletzt bearbeitet: 03.06.2010

Diese Seite empfehlen