Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 03/02/16, 11:58:23
Avatar de DevilKeeper
DevilKeeper DevilKeeper no está en línea
Usuario poco activo
Mensajes: 8
 
Fecha de registro: ene 2016
Mensajes: 8
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Si no ordenas el RelativeLayout... no compila!!

Hola,

Como buen novato, os traigo una duda que me ha tenido loco toda la mañana.

En mi Main tengo un RelativeLayout con un ListView y un Button. Además, tengo otro layout que contiene el diseño para cada item del ListView, el cual contiene otro RelativeLayout, dos ImageViews y dos TextViews, ordenados de una forma concreta. Algo así:



El caso es que voy a compilar, y revienta la clase R. En las instrucciones de alineado de los componentes da error, en ambos layout.

Total, que después de mil intentos de recuperar la clase R (pensando que ese era el problema), empiezo a jugar con los layouts, y resulta que el error viene de que no puedo alinear un control a otro, si ese al que le alineo está definido por debajo en el xml.

Por ejemplo, alineo el Text1 por encima del Text2. Pues peta, porque el Text1 está definido ANTES que el Text2 y al compilar no debe saber que existe Text2.

He leído muchos tutoriales sobre el RelativeLayout y en ninguno he visto nada así. ¿Esto es algo normal?.

Gracias.

Última edición por DevilKeeper Día 03/02/16 a las 12:05:15 Razón: Poner la imagen
Responder Con Cita


  #2  
Viejo 03/02/16, 12:10:55
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
No, no es normal.

Asegúrate que usas SIEMPRE @+id en lugar de @id. Porque la única diferencia entre usar uno u otro es precisamente el problema que estás teniendo.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 03/02/16, 12:11:05
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Más que del RelativeLayout es en general al usar identificadores en el XML. Si no está definido antes da un error, a no ser que uses la forma @+identificador al referenciarlo (para que así se cree el identificador incluso antes de crear el objeto en cuestión).

Échale un vistazo al apartado ID si quieres: http://developer.android.com/intl/es...ng-layout.html

P.D: Por 10 segundos jaja @kriogeN
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 03/02/16, 12:26:42
Avatar de DevilKeeper
DevilKeeper DevilKeeper no está en línea
Usuario poco activo
Mensajes: 8
 
Fecha de registro: ene 2016
Mensajes: 8
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Todos los identificadores están con la forma @+id/.

Ayer no llegué a lanzar el proyecto, pero juraría que no daba ningún error. He abierto hoy el Android Studio y directamente ha petado.

En la clase Main, al añadirle el R.layout... etc, ya me aparecía el error de la clase R.

He vuelto a reproducir el error del Layout Main, os paso el código:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.emeuve.cinecentrado.MainActivity">

<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listaSalas"
android:layout_above="@id/botonNuevaSala" />

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/botonNuevaSala"
android:text="@string/botonNuevaSala"
android:layout_alignParentBottom="true" />

</RelativeLayout>Y el error que me salta es:

Error16, 31) No resource found that matches the given name (at 'layout_above' with value '@id/botonNuevaSala').

La clase R explota y no arranca el programa.

Éste Layout únicamente tiene el ListView arriva, y el Button debajo. El Button está alineado con el Paret abajo, para que siempre sea visible en la pantalla.
Responder Con Cita
  #5  
Viejo 03/02/16, 12:29:55
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Cuando digo todos es todos:

android:layout_above="@id/botonNuevaSala"

También tiene que ser @+id
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 03/02/16, 12:35:45
Avatar de DevilKeeper
DevilKeeper DevilKeeper no está en línea
Usuario poco activo
Mensajes: 8
 
Fecha de registro: ene 2016
Mensajes: 8
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por kriogeN Ver Mensaje
Cuando digo todos es todos:

android:layout_above="@id/botonNuevaSala"

También tiene que ser @+id
De acuerdo, muchas gracias por la respuesta. Pensé que el @+id únicamente se usaba para darle nombre al View, no para referenciarlo.

Gracias de nuevo.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 05:15:58 (GMT +1)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007