So setzen Sie die Inhaltsansicht der Natveaktivität auf Komponenten, die in Java erstellt wurden

StackOverflow https://stackoverflow.com/questions/7815368

Frage

Gibt es eine Möglichkeit, den Inhalt einer Natveaktivität auf eine in Java erstellte Komponente (z. B. einen Framelayout, ImageView usw.) zu setzen? Ich muss eine Natveaktivität verwenden (zum Erhalten von Touchpad -Eingaben für das Xperia -Spiel), aber ich muss auch in der Lage sein, Komponenten anzusehen, die im Java -Code erstellt wurden.

Ich habe versucht, den Befehl OnCreate zu überschreiben und setContentView aufzurufen, aber obwohl dies keine Fehler auswirbt, ist es auch nichts unternommen (anscheinend, weil die Inhaltsansicht bereits vom nativen Code festgelegt wird). Gibt es eine Art Fenster -ID oder etwas, das ich an den nativen Code übergeben könnte, um zu sagen, wie die Inhaltsansicht aussehen soll, oder kann dies irgendwie in der XML eingerichtet werden von Java?

Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

War es hilfreich?

Lösung

Ich werde die Antwort hier für andere mit dem gleichen Problem veröffentlichen, da ich irgendwann eine Methode herausgefunden habe, die funktioniert.

Wenn Sie in der Methode onCreate () bestimmte Fenster -Flags (feature_no_title, flag_fullscreen, flag_keep_screen_on usw.) festlegen, tun Sie diese, bevor Sie super.oncreate (oder sie werden ignoriert). Dann, wo immer Sie normalerweise Folgendes setzen würden:

setContentView( whatever );

Tun Sie dies stattdessen:

getWindow().takeSurface( null );
getWindow().setContentView( whatever );

Dies ist die grundlegende Möglichkeit, den Inhalt von der Java -Seite zu kontrollieren. Jeder Ort in Ihrem Code, an dem Sie sich mit dem Inhalt befassen, verwenden Sie "GetWindow ()" anstelle von "This".

Einige andere Dinge, die Sie beachten sollten, sind, dass die normalen Methoden von Onkey und Ontouch nicht aufgerufen werden (ihre nativen Äquivalente werden stattdessen sein). Wenn Sie also in der Lage sind, Eingaben auf der Java -Seite zu verarbeiten Eine JNI -Verknüpfung, um die Informationen aus Java zu senden. Ich glaube, alles andere ist im offiziellen Xperia Play Touchpad-Beispielcode (die Ergänzungen zum AndroidManifest.xml und was nicht) enthalten.

Wenn Sie sich mein Projekt als Referenz ansehen möchten, ist es Open-Source und finden Sie unter:

http://www.paulscode.com/forum/index.php?topic=75.msg1540#msg1540

Klicken Sie einfach auf den Link "Quellcode" neben "Xperia Touch-Pad-Beispiel spielen". Es ist jedoch möglicherweise nicht so nützlich für Sie, denn es ist ein ziemlich großes Projekt und es ist möglicherweise schwierig, zu finden, wonach Sie suchen. Wenn Sie Probleme haben, stellen Sie dort eine Frage in meinem Forum oder senden Sie mir eine E -Mail, und ich werde gerne helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top