Pregunta

¿Hay alguna forma de establecer el contenido de una nativaactividad a un componente creado en Java (como un Framelayout, ImageView, etc.)? Tengo la necesidad de usar una nativeactivity (para obtener la entrada del panel táctil en Xperia Play), pero también necesito poder ver los componentes creados en el código Java.

He intentado anular el comando OnCreate y llamar a SetContentView allí, pero aunque eso no arroja ningún error, tampoco hace nada (aparentemente porque la vista de contenido ya está configurada por el código nativo). ¿Hay algún tipo de ID de ventana o algo que pueda pasar al código nativo para decirle cuál debería ser la vista del contenido, o de alguna manera se puede configurar en el XML para establecer la vista de contenido de la nativeactividad en un componente que puedo modificar? de Java?

Avíseme si necesita más información.

¿Fue útil?

Solución

Publicaré la respuesta aquí para otros con el mismo problema, ya que eventualmente descubrí un método que funciona.

En el método OnCreate (), si está configurando los indicadores de ventana particular (Featu_NO_Title, Flag_fullScreen, Flag_Keep_Screen_on, etc), haga aquellos antes de llamar a Super.onCreate () (o se ignorarán). Entonces, donde sea que normalmente pongas esto:

setContentView( whatever );

Haz esto en su lugar:

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

Esa es la forma básica de controlar el contenido del lado de Java. Cualquier lugar en su código donde trata el contenido, use "getwindow ()" en lugar de "esto".

Algunas otras cosas a tener en cuenta son que los métodos normales de OnKey y OnTouch no se llamarán (sus equivalentes nativos serán en su lugar), por lo que si necesita poder procesar la entrada en el lado de Java, tendrá que establecer Up algunos enlaces de JNI para enviar la información de nativo a Java. Creo que todo lo demás está incluido en el código de muestra oficial de Xperia Play TouchPad (las adiciones al AndroidManifest.xml y qué no).

Si desea ver mi proyecto como referencia, es de código abierto y se puede encontrar en:

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

Simplemente haga clic en el enlace "Código fuente" junto a "Ejemplo de Touch-Pad de Xperia Play". Sin embargo, puede que no sea tan útil para usted, porque es un proyecto bastante grande y puede ser difícil encontrar lo que está buscando. Si tiene algún problema, publique una pregunta en mi foro allí o envíeme un correo electrónico, y estaré encantado de ayudarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top