2013-07-03 4 views
16

Ich versuche, eine RemoteViews-Instanz auf einem Canvas darzustellen, wie ich es mit einer normalen Ansicht mache. Ich benutzeKonvertieren von RemoteView in eine Ansicht

RemoteViews.apply (Kontext, null)

und eine FrameLayout kehrt mit allen Ansichten verschachtelt und richtig gemessen (Position und Größe richtig ist), aber nach dem Einschalten der Verwendung .draw returned view, rendert alle Elemente ohne Werte - TextViews sind leer, AnalogClock wird um 00:00 zurückgesetzt usw.

Irgendwelche Ideen? Ich bin verloren :(

+0

Versuchen Sie, in Systembibliotheken in Debugger zu gehen. –

+0

Bitte posten Sie Ihre XML. An welchem ​​Punkt stellen Sie die Werte für die TextViews, Analog Clock usw. ein? –

+0

@KarimVarela simple AnalogClock, keine Werte in xml neben der Layout_width und layout_height. Wenn auf dem Gerät gerendert wird, zeigt es die korrekte Zeit an, in der Ansicht, die von apply() zurückgegeben wird, wird immer 00:00 angezeigt. – gilm

Antwort

1

Nicht sicher, ob die Frage immer noch aktuell ist. Dennoch ist hier meine Erfahrung mit RemoveViews. Es scheint, Sie können nicht draw() auf der zurückgegebenen Ansicht aufrufen. Sie müssen diese Ansicht zu einem übergeordneten Container hinzufügen machen es zu einem Teil der globalen Ansichtshierarchie. zum Beispiel Sie ein Activity mit einem einzigen FrameLayout in ihm. der Code wird wie folgt aussehen.

FrameLayout parent = findViewById(R.id.container); 
View view = RemoteViews.apply(getActivity(), parent); 
parent.addView(view); 

Jetzt sollten Sie in der Lage sein, Tests zu sehen. Wenn Sie Hörer eingestellt , sie werden auch richtig funktionieren