Widget updaterings problem i emulatorn

Diskussion i 'Frågor, support och diskussion' startad av RobertW, 8 maj 2010.

  1. RobertW

    RobertW Baby Droid Medlem

    Blev medlem:
    1 mar 2010
    Inlägg:
    18
    Mottagna gillanden:
    0

    MINA ENHETER

    Hej.

    Håller på att skiva mitt första Android (och Java program) och de går bra. Java är inte å svårt när man kan C# och C++ ordentligt.

    Har dock råkat ut för en lustighet nu.

    Håller på att skriva en liten widget som visar månens fas nu och även tid då månen går upp och ned. Widgeten uppdateras var 30:e minut och detta fungerar fint i min telefon. Kär jag det i emulatorn ser jag inte updateringen på skärmen konstigt nog. Bilden andrar sig inte och det står kvar samma fasläge på skärmen trots att jag i debugen ser att den har valt en annan bild och skrivit ny text. Antagligen vet ingen här heller varför men det skadar inte att fråga om någon vet vad som kan orsaka detta?

    Känns lite oroväckande att det inte fungerar som det skall i emulatorn. Kan ju betyda att det inte fungerar på alla telefoner med.

    /Robert
     
  2. henca

    henca Senior Droid Medlem

    Blev medlem:
    30 dec 2009
    Inlägg:
    1 335
    Mottagna gillanden:
    211

    MINA ENHETER

    Den här koden använder jag för att uppdatera texten i en widget:

    Kod:
        private static void putTextInWidgetMessage(Context context, String string)
        {
    		Log.d("TelenorKontant", "Entering putTextInWidgetMessage...");
            RemoteViews updateViews =
            	new RemoteViews(context.getPackageName(), R.layout.widget_output);
        	updateViews.setTextViewText(R.id.message, string);
        	refreshTextInWidget(context, updateViews);
        }
    
        private static void refreshTextInWidget(Context context, RemoteViews updateViews)
        {
    		Log.d("TelenorKontant", "Entering refreshTextInWidget...");
        	if((context != null) && (updateViews != null))
        	{
        		ComponentName thisWidget = new ComponentName(context, TelenorWidget.class);
        		AppWidgetManager manager = AppWidgetManager.getInstance(context);
        		manager.updateAppWidget(thisWidget, updateViews);
        	}
        	else
        		Log.d("TelenorKontant", "context or updateViews is null, unable to refreshText!");
        }
    
    Min kod fungerar både på min telefon och i emulatorn.

    m v h Henrik
     
  3. RobertW

    RobertW Baby Droid Medlem

    Blev medlem:
    1 mar 2010
    Inlägg:
    18
    Mottagna gillanden:
    0

    MINA ENHETER

    Tack för tipset. Skall jämför med det jag har gjort ikväll.
     
  4. the_bean

    the_bean Youth Droid Medlem

    Blev medlem:
    20 apr 2010
    Inlägg:
    134
    Mottagna gillanden:
    2

    MINA ENHETER

    Det finns en allvarlig bugg i AppWidgetManager. Om man har ett konfigurationsprogram tilll widgeten och användaren avbryter så tas inte widgen bort men den är inte synlig. Efter mycket debuggande i emulatorn hade jag en gång 42 st olika widget id's enligt AppWidgetManagern men bara en aktiv och synlig widget.

    Detta kan troligen leda till ett scenario där ens widget inte verkar uppdateras eftersom man skickar uppdateringen till fel id. Ett otroligt irriterande fel man verkligen får hoppas att dom fixat till 2.2.

    /Kent