Presentación de los fragmentos

48
Anna Schaller Peter van der Linden Evangelistas de la tecnología Android Plataformas y Servicios del Desarrollador Motorola Mobility Presentación de los fragmentos

Transcript of Presentación de los fragmentos

Page 1: Presentación de los fragmentos

Anna Schaller Peter van der Linden

Evangelistas de la tecnología Android Plataformas y Servicios del Desarrollador

Motorola Mobility

Presentación de los fragmentos

Page 2: Presentación de los fragmentos

2 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Fragmentos

•  Permite que una aplicación se divida en subcomponentes para poder manejarlos de manera individual y combinarlos de distintas formas, como por ejemplo la creación de un multipanel UI.

Page 3: Presentación de los fragmentos

3 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

¿Por qué fragmentos?

•  Desde el punto de vista de un desarrollador, la transición más grande de smartphones y tablets es el tamaño de la pantalla.

•  Los fragmentos crean una puente para las aplicaciones en smartphones y tablets que desean ser optimizadas

Page 4: Presentación de los fragmentos

4 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Cómo llegar allí

•  Hay dos formas de hacerlo

–  Android 3.0 SDK

–  Paquete de compatibilidad Android •  Cantidad de diseños

–  Soporte para paneles dual+ en cualquier lugar

–  Soporte para panel simple en cualquier lugar •  Todavía se necesita algún tipo de Activity/es •  Crear un par de fragmentos •  Para cada fragmento visible, agregar un UI •  Agregar los fragmentos a una Activity

Page 5: Presentación de los fragmentos

5 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

•  Tamaño de la pantalla

–  pequeña, normal, grande, extragrande

•  Para cada tamaño de pantalla hay 2 orientaciones

–  Horizontal

–  Vertical

•  Planificar para las distintas configuraciones

–  /res/layout-small-land y /res/layout-small-port

–  /res/layout-normal-land y /res/layout-normal-port

–  /res/layout-large-land y /res/layout-large-port

–  /res/layout-xlarge-land y /res/layout-xlarge-land

Planificar para diseños

Page 6: Presentación de los fragmentos

6 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Panel doble (horizontal y vertical)

Page 7: Presentación de los fragmentos

7 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Fragmentos: panel doble

Fragmento de Lista Fragmento

Activity

findFragmentById(R.id.DetailFragment)!

setContentView(R.layout.main)!

Page 8: Presentación de los fragmentos

8 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Cómo trabajar con fragmentos en Android 3.0 1.  Crear una nueva clase para cada uno de sus fragmentos

•  import android.app.Fragment;

–  extender Fragment o ListFragment (en lugar de la Activity)

–  agregar llamadas del ciclo de vida 2.  Crear el archivo nuevo resource.xml para cada fragmento

<ViewGroup> <UI elements> </ViewGroup>!

3.  Actualizar main.xml con la pestaña del fragmento nuevo para cada fragmento !<fragment class="my.new.fragment.class" !! ! !android:id="@+id/fragmentIdX>!

4.  En MainApp.java (se extiende a Activity)

•  import android.app.Fragment;!

•  Cargar el diseño de la aplicación con setContentView(R.layout.main)

•  Elementos de la lista Fragment1 se adjuntan a fragment2 con findFragmentById(R.id.fragmentIdX).

Page 9: Presentación de los fragmentos

9 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Anatomía de un proyecto. Panel doble solamente (Android 3.0)

myFragmentProject |-- AndroidManifest.xml |-- /src |------- /main.java // ampliar Activity |------- /fragment1.java // ampliar Fragment, ListFragment, DialogFragment, etc. |------- /fragment2.java // ampliar Fragment, ListFragment, DialogFragment, etc. |--- /res |------- /layout-land // diseño horizontal |----------- /main.xml // archivo de recurso de la aplicación de diseño

horizontal c/pestañas del fragmento |----------- /fragment1.xml // diseño UI del fragmento 1 |----------- /fragment2.xml // diseño horizontal UI del fragmento 2 |------- /layout-port // diseño vertical |----------- /main.xml // archivo de recurso de aplicación vertical c/pestañas

del fragmento |----------- /fragment2.xml // diseño vertical UI del fragmento 2 |------- /values-xlarge | . . .

Page 10: Presentación de los fragmentos

10 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Código 3.0: main.java

•  La Activity principal aplica un diseño de la manera habitual durante onCreate()!

• setContentView(R.layout.main) carga el archivo de recurso que contiene el diseño con las pestañas <fragment>. Los fragmentos crean una instancia en cuanto la actividad carga el diseño.

Page 11: Presentación de los fragmentos

11 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Código 3.0: Diseño principal

fragment1 (lista)

fragment2 (detalle)

Horizontal de lado a lado

Page 12: Presentación de los fragmentos

12 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Código 3.0: Diseño principal

Vertical de arriba a abajo

anchura y altura de la lista debe invertirse

Page 13: Presentación de los fragmentos

13 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Código 3.0: Lista del fragmento

configurar el adaptador de lista

crear lista devo- lución d/elemento

encontrar frag- mento d/detalle y actualizar la imagen

llamado nuevo ciclo de vida para ejecutar después de creada la actividad

Page 14: Presentación de los fragmentos

14 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Código 3.0: Detalle del fragmento

amplíe la vista de los detalles y cargue la primera imagen

reemplace la imagen según la posición de la lista

Page 15: Presentación de los fragmentos

15 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Código 3.0: Fragmentos UI

(fragmento 1) Enumerar elem.

(fragmento 2) Framelayout con ImageView

Page 16: Presentación de los fragmentos

16 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

•  Cómo definir los recursos UI –  Use las mismas vistas y grupos de

vistas que en una Activity

Fragmentos con un UI

listfragment.xml <TextView>!

fragment.xml <FrameLayout>!

!<ImageView>! <LinearLayout>! <GridView>! [. . .] dialogfragment

Page 17: Presentación de los fragmentos

17 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Fragmentos sin un UI

•  Dado que los fragmentos se pueden compartir a lo largo de las Acitivities, usted puede ejecutar un hilo en un fragmento de trabajo y compartir eso entre las Activities

•  Sigue necesitando definir el fragmento en una clase separada (Fragmento de subclase)

–  /src/WorkerFragment.java •  No necesita un archivo de recurso porque no hay interfaz de usuario

–  res/layout/WorkerFragment.xml •  No necesita pestaña de <fragment> en el archivo de diseño de la

Activity aunque ya no haya una identificación para encontrar al fragmento

•  Sin una @+id debe interactuar con el fragmento por vía de una "etiqueta"

Page 18: Presentación de los fragmentos

18 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

findFragmentByTag() public static class WorkerFragment extends Fragment {!![. . .] // haga algo en un subproceso en segundo plano!

}!

public static class MyOtherFragment extends Fragment {! @Override! public void onActivityCreated(Bundle savedInstanceState) {

            super.onActivityCreated(savedInstanceState);

! !FragmentManager fm = getFragmentManager();

!// verifique para ver si hemos retenido el fragmento de trabajo.!mWorkFragment = (WorkerFragment)fm.findFragmentByTag("work");

!// Si no se retuvo (ni se ejecutó por primera vez), debemos crearlo. !if (mWorkFragment == null) { !   mWorkFragment = new WorkerFragment();!

    ! // Dígale con quién está trabajando.     ! mWorkFragment.setTargetFragment(this, 0);     ! fm.beginTransaction().add(mWorkFragment, "work").commit();!

! !}! }!}!

Page 19: Presentación de los fragmentos

19 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Paquete de compatibilidad de Android

•  Conocido como "Fragmentos para todos" •  Paquete de compatibilidad de Android frente a Honeycomb •  ¿Cuál es la diferencia?

•  La biblioteca de compatibilidad funciona con niveles de IPA 4 y superior

•  Biblioteca nueva que debe agregarse a su proyecto •  Tipo de Activity nueva •  Nuevas API

Page 20: Presentación de los fragmentos

20 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Panel dual (Android 2.2 en horizontal)

Page 21: Presentación de los fragmentos

21 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Panel simple (Android 2.2 en vertical)

Page 22: Presentación de los fragmentos

22 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Fragmentos: panel doble

Fragmento de Lista Fragmento

FragmentActivity1

findFragmentById(R.id.DetailFragment)!

setContentView(R.layout.main)!

Page 23: Presentación de los fragmentos

23 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Fragmentos: panel simple

Fragmento

Fragmento Activity1

Fragmento Activity2

Lista Fragmento

intent.setClass(getActivity(),Fragment2.class);!startActivity(intent);!

setContentView(R.layout.main)!

findViewById(R.id.DetailFragment) es NULO!

Page 24: Presentación de los fragmentos

24 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Modificaciones para la biblioteca de compatibilidad

•  Actualizar recursos

–  El diseño vertical sólo tiene pestaña de fragment1 (no de fragment2) •  Actualizar código

•  importar android.v4.support.*!

–  Configurar booleano según la orientación

–  Si la orientación== horizontal, es un panel doble •  Mostrar fragment1 y fragment2

–  Si la orientación== vertical, es un panel simple •  Abra fragment2 en un nuevo FragmentActivity por vía de un intent

–  Llame getSupportFragmentManager() en lugar de getFragmentManager()

Page 25: Presentación de los fragmentos

25 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Anatomía de un proyecto: panel doble + panel simple (Paquete de compatibilidad Android) myFragmentProject |-- AndroidManifest.xml |-- /src |------- /main.java // ampliar FragmentActivity |------- /fragment1.java // ampliar Fragment, ListFragment, DialogFragment, etc. |------- /fragment2.java // ampliar Fragment, ListFragment, DialogFragment, etc. |------- /fragment2Main.java // ampliar FragmentActivity |--- /res |------- /layout-land // diseño horizontal (orientación natural del tablet) |----------- /main.xml // tablet o archivo de recurso de aplicación horizontal (doble) |----------- /fragment1.xml // diseño UI del fragmento 1 |----------- /fragment2.xml // diseño UI del fragmento 2 |------- /layout-port // diseño vertical (orientación natural del smartphone) |----------- /main.xml // phone o archivo de recurso de aplicación vertical (simple) |----------- /fragment1.xml |------- /values-xlarge | . . .

Page 26: Presentación de los fragmentos

26 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Cómo usar el paquete de compatibilidad de Android

•  Cómo configurar el entorno

–  Descargar "Paquete de compatibilidad de Android" con el AVD & SDK Manager de Android. En su directorio de instalación SDK, encontrará extras/android/compatibility/v4/android-support-v4.jar.

–  Cree un nuevo proyecto Android en el nivel de API seleccionada (4 a 10).

–  Agregue android-support-v4.jar a su directorio de bibliotecas/proyecto.

–  Si usted es un usuario de Studio o Eclipse, también agréguelo a su ruta de generación para el proyecto (Project->Properties->Java Build Path->Libraries->Add JAR).

Page 27: Presentación de los fragmentos

27 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Una explicación del código

© 2010 Motorola Mobility, Inc.

Page 28: Presentación de los fragmentos

28 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Panorama general

PULSAR

El smartphone necesita 2 pantallas La d/la izquierda es una lista, la d/la derecha c/detalles d/elem. seleccionado ListItem

El tablet tiene espacio para 2 pantallas

Pero no tenemos una manera de poner 2 Activities en una pantalla...

Page 29: Presentación de los fragmentos

29 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

¡Hasta ahora! •  Todavía no podemos poner dos Activities en pantalla

• Pero podemos hacer algo casi tan bueno

• Podemos poner la mayor parte de nuestra Activity en un fragmento

•  Los Fragmentos pueden estar en un diseño por sí mismos o con Vistas u otros Fragmentos. El Marco ya nos da la recursos de diseños alternativos para los distintos tamaños de pantalla. Por eso, simplemente cree un diseño nuevo para los dispositivos extragrandes.

• Voilà: hacer aplicaciones fáciles de usar en el tablet es "sólo refactorizar"

Page 30: Presentación de los fragmentos

30 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Anatomía de una Aplicación (antes de los fragmentos)

PULSAR

setContentView( R.layout.showoneitem);

<LinearLayout …

<ScrollView …

res/layout/showoneitem.xml

ShowOneItemActivity.java MainActivity.java

main.xml

Page 31: Presentación de los fragmentos

31 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Cómo ir a la pantalla siguiente

PULSAR

onCreate(…) {

}

ShowOneItemActivity.java i = new Intent( Ctxt, ShowOneItemActivity.class); startActivity( i );

MainActivity.java

<activity android:name=".MainActivity"/> <activity android:name=”.ShowOneItemActivity"/> </application>

AndroidManifest.xml

Page 32: Presentación de los fragmentos

32 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

La estrategia de fragmento para ShowOneItemActivity •  Vamos a pasar todo el código ShowOneItemActivity a un Fragmento

•  ese Fragmento será invocado por ShowOneItemActivity cuando esté en un dispositivo de pantalla pequeña, normal o grande

•  …pero también puede ser incrustado en un diseño XML de alguna otra Activity, cuando esté en una pantalla XL

•  entonces, hay dos formas de llegar a ShowOneItemFragment   Desde la Activity que donó todo su código al Fragmento   Desde un diseño XML, que pertenece a alguna otra Activity

Page 33: Presentación de los fragmentos

33 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Agregará un Fragmento para ShowOneItemActivity

<LinearLayout …

<ScrollView …

res/layout/showoneitem.xml

ShowOneItemActivity.java Cómo se ve ahora

Encaje un Fragmento aquí

Page 34: Presentación de los fragmentos

34 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Agregue un Fragmento para ShowOneItemActivity

<LinearLayout …

<ScrollView …

showoneitem.xml

setContentView( r.layout.showoneitem_actfrag); ShowOneItemActivity.java

<fragment class=”ShowOneItemFragment” android:layout_width=…

res/layout/showoneitem_actfrag.xml

… extends Fragment { public View onCreateView( LayoutInflater i, ViewGroup c, Bundle b) { return i.inflate( R.layout.showoneitem, c);

ShowOneItemFragment.java

Page 35: Presentación de los fragmentos

35 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

El archivo XML para un fragmento

<?xml version="1.0" encoding="utf-8"?>!<fragment! xmlns:android=! "http://schemas.android.com/apk/res/android"! android:name="com.example.ShowOneItemFragment"! android:layout_width="match_parent"! android:layout_height="wrap_content"! android:id="@+id/showoneitemfragment">!</fragment>!

•  Tamaño de diseño usual, para saber cuán alto y ancho

•  puntos XML para el formato de archivo de Fragmento

•  Debe darle una identificación o etiqueta

Page 36: Presentación de los fragmentos

36 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

El código para un fragmento

public class Foo extends Fragment { public void onCreate()! public View onCreateView(...) ! public void onPause() ! ...!}!

•  Cuando pasa el código desde la Activity, se delinea casi a los mismos eventos LifeCycle

•  Estos 3 métodos pueden alcanzar. Guarde en onPause

•  onCreateView() amplía el XML, regresa la raíz Vista del Fragmento

Page 37: Presentación de los fragmentos

37 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

La historia hasta ahora

• Hemos refactorizado nuestra Activity en una Activity y un Fragmento

• Todo el código de Activity pasó al Fragmento. La Activity es ahora un contenido adicional para el Fragmento

• Podemos meternos en el código como una Activity o un Fragmento

•  ¿Cómo elegimos correctamente?

Page 38: Presentación de los fragmentos

38 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Use el recurso alternativo para lograr el diseño correcto.

PULSAR

XML p/diseñar pantalla roja peq.

<fragment class= “a.b.c.d”

<fragment class=“w.x.y.z”

res/layout-xlarge/main.xml

res/layout/main.xml

setContentView(R.layout.main)

Let the frame work!

Page 39: Presentación de los fragmentos

39 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Las listas podrían ser un gran problema con este enfoque

• Usted no tiene un archivo XML para la lista como un todo

• Sólo tiene un archivo XML para una entrada en la lista

• setListAdapter hace la magia de colocar la ListView en la ListActivity

•  Pero necesita archivos XML para llegar a los fragmentos desde las Activities

• ¿Cuál es la solución? ¡ListFragment! Similar a ListActivity

Page 40: Presentación de los fragmentos

40 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Un último consejo

•  Los Fragmentos son magníficos y querrá usarlos para refactorizar sus aplicaciones para que sean fáciles de usar.

•  Tenga cuidado de ser coherente con las clases de archivo y los nombres de archivos XML.

•  Algunos métodos muy dominantes requieren un pedido para superclasificar. Por ejemplo, onCreate() cuando se usa un FragmentActivity

• Dentro de un Fragmento, getActivity() es muy útil

•  En una Activity, amplíe FragmentActivity para obtener las operaciones del Fragmento, como getSupportFragmentManager();

Page 41: Presentación de los fragmentos

41 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Cómo usar los Fragmentos. Información

•  Información práctica sobre los Fragmentos en la Guía del Desarrollador 3.0

•  Consulte la referencia 3.0 para API

•  android.app.Fragment!

•  android.app.ListFragment!

•  Muestra una lista similar para ListActivity

•  android.app.DialogFragment !

•  Muestra un diálogo flotante!

•  android.app.FragmentManager •  Interfaz para interactuar con el fragmento (findFragmentById)

•  android.app.FragmentTransaction !

•  API para las operaciones del fragmento (agregar, eliminar, reemplazar, ocultar, mostrar)!

Page 42: Presentación de los fragmentos

42 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Cómo usar los fragmentos. Ejemplos •  Aplicación Honeycomb Gallery para fragmentos de Android 3.0 •  En la carpeta extra del paquete de compatibilidad de Android

–  /android-sdk/extras/android/compatibility/v4/samples/ApiDemos/src/com/example/android/apis/app/

–  Busque el fragmento<>.java para versión HC

–  Fragmento<>Support*.java para código del paquete de compatibilidad de Android

•  Publicaciones del blog de Reto Meier

–  http://blog.radioactiveyak.com/2011/02/android-app-surgery-earthquake-redux.html

–  http://blog.radioactiveyak.com/2011/02/strategies-for-honeycomb-and-backwards.html

•  Publicaciones del blog de Dianne Hackborn

–  http://android-developers.blogspot.com/2011/02/android-30-fragments-api.html (La API de los Fragmentos de Android 3.0)

Page 43: Presentación de los fragmentos

43 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Más información: developer.motorola.com

•  Herramientas

–  MOTODEV Studio: IDE basado en Eclipse con características adicionales (ubicación de cadenas, gerente de base de datos)

–  App Validator: herramienta en línea para prueba previa de las aplicaciones de Android para compatibilidad en los dispositivos

•  Artículos técnicos

–  Sugerencias de programación de Motorola XOOM

–  Cómo comprender la compresión de textura •  Especificaciones del producto

–  http://developer.motorola.com/products/xoom/ •  Paneles de discusión

Page 44: Presentación de los fragmentos

44 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

¿Desea  formular  alguna  pregunta?

Brasil - #appsum11br Argentina - #appsum11ar México - #appsum11mx

community.developer.motorola.com

Page 45: Presentación de los fragmentos

45 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

gracias

Page 46: Presentación de los fragmentos

46 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Licencias

Los ejemplos del código fuente que se exhiben en esta presentación pueden estar bajo la licencia de Apache, Versión 2 según lo siguiente:

Copyright © 2010, Android Open Source Project. Todos los derechos reservados, salvo indicación expresa en contrario.

Con licencia de Apache, Versión 2.0 (la "Licencia"); no podrá usar este archivo, salvo que cumpla con lo que establece la Licencia. Puede conseguir una copia de la licencia en http://www.apache.org/licenses/LICENSE-2.0.

Salvo que lo exija la legislación vigente o se preste conformidad por escrito, el software se distribuye bajo la Licencia "EN EL ESTADO EN QUE SE ENCUENTRA", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, explícitas o implícitas. Consulte la Licencia para ver los permisos y las limitaciones que rigen para la Licencia según el idioma específico.

Page 47: Presentación de los fragmentos

47 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011

Licencias Los ejemplos del código fuente que se muestran en esta presentación pueden estar bajo la

licencia BSD, según lo siguiente:

Copyright © 2010-2011, Motorola, Inc. Todos los derechos reservados, salvo indicación expresa en contrario. Se permite la redistribución y el uso en forma de fuente o binaria, con o sin modificación, siempre y cuando se cumpla con

las siguientes condiciones: Las redistribuciones del código fuente deben conservar el aviso de derechos de autor arriba mencionado, la presente

lista de condiciones y el siguiente descargo de responsabilidad.

Las redistribuciones en forma binaria deben reproducir el aviso de derechos de autor arriba mencionado, la presente lista de condiciones y el siguiente descargo de responsabilidad en la documentación y/u otros materiales suministrados con la distribución.

Ni el nombre de Motorola, Inc. ni los nombres de sus distribuidores pueden usarse para avalar o promover productos que deriven de este software sin previa autorización específica por escrito.

EL PRESENTE SOFTWARE SE SUMINISTRA POR LOS TITULARES DE LOS DERECHOS DE AUTOR Y CONTRIBUYENTES EN EL ESTADO "EN QUE SE ENCUENTRA" Y SE RECHAZA TODA RESPONSABILIDAD DE GARANTÍA IMPLÍCITA O EXPLÍCITA, A TÍTULO ENUNCIATIVO, LAS GARANTÍAS IMPLÍCITAS DE COMERCIALIZACIÓN Y DE APTITUD PARA UN PROPÓSITO PARTICULAR. EN NINGÚN CASO PODRÁ EL TITULAR DE LOS DERECHOS DE AUTOR O LOS CONTRIBUYENTES SER RESPONSABLE POR NINGÚN DAÑO Y PERJUICIO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, PUNITIVO, O CONSECUENCIAL (A TÍTULO ENUNCIATIVO DE ABASTECIMIENTO DE BIENES O SERVICIOS DE SUSTITUCIÓN; PÉRDIDA DE USO, DATOS O GANANCIAS O INTERRUPCIÓN DE ACTIVIDADES) INDEPENDIENTEMENTE DE SU ORIGEN Y DE TODA TEORÍA DE RESPONSABILIDAD, YA SEA EN EL CONTRATO, RESPONSABILIDAD ESTRICTA O POR LESIÓN JURÍDICA (INCLUSO NEGLIGENCIA O DE OTRO MODO) QUE SURJA DE ALGUNA MANERA DEL USO DE ESTE SOFTWARE, INCLUSO SI SE ADVIRTIÓ DE LA POSIBILIDAD DE DICHO DAÑO.

Page 48: Presentación de los fragmentos

48 Page

© 2011 Motorola Mobility, Inc.

MOTODEV App Summit 2011