English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Origen y presentación de Fragmentos
Android se ejecuta en una variedad de dispositivos, desde teléfonos con pequeñas pantallas hasta tabletas de gran pantalla e incluso televisores. Debido a la diferencia en el tamaño de la pantalla, en muchos casos, primero se desarrolla una aplicación para teléfonos, luego se copia y se modifica el diseño para adaptarse a tabletas y grandes pantallas. ¿No se puede lograr que una aplicación se adapte tanto a teléfonos como a tabletas? ¡Claro que sí! La aparición de Fragmentos es para resolver este problema. Puedes ver a Fragmento como una parte de la interfaz de un Activity, e incluso la interfaz de Activity puede estar completamente compuesta por diferentes Fragmentos. Lo más impresionante es que Fragmento tiene su propio ciclo de vida y puede recibir y procesar eventos del usuario, por lo que no es necesario escribir mucho código de manejo de eventos de widgets en Activity. Lo más importante es que puedes agregar, reemplazar y eliminar un Fragmento dinámicamente.
Ayer aprendí sobre Fragmentos de Android. Sigo las instrucciones del sitio web oficial, creé una clase BlankFragment que hereda de Fragment. Luego, al compilar, salió un error:
Error: La ejecución falló para la tarea ':app:processDebugManifest'. > La fusión de manifestos falló: Atributo meta-data#android.support.VERSION@value value=(26.0.0-beta1) desde [com.android.support:design:26.0.0-beta1] en AndroidManifest.xml:28:13-41 también se encuentra en [com.android.support:support-v4:26.1.0] en AndroidManifest.xml:28:13-35 value=(26.1.0). Sugerencia: agregar 'tools:replace="android:value"' a <meta-elemento en data> AndroidManifest.xml:26:9-28:44 para anular.
Busqué un poco y hay todo tipo de cosas que decir. Lo más inseguro de todos es decir que se debe cambiar la etiqueta del archivo manifest de android:name a class. ¡Claramente, esto tiene que ver con la versión! Después de buscar, finalmente encontré una solución compatible con la versión, que requiere agregar el siguiente código en el archivo build.gradle del directorio app:
configurations.all {}} resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '26.0.0-beta1' } } } }
Pruebas y funciona realmente. Pero no podemos conformarnos con eso.
Notar que, justo encima del código añadido, se describe la biblioteca de dependencias del proyecto:
dependencies { implementación fileTree(dir: 'libs', include: ['*.jar']) implementación 'com.android.support:appcompat-v7:26.0.0-beta1' implementación 'com.android.support.constraint:constraint-layout:1.0.2' implementación 'com.android.support:design:26.0.0-beta1' implementación 'com.android.support:support-v4:26.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:0.5' androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2' }
Y en esta línea hay una línea roja inferior:
implementación 'com.android.support:appcompat-v7:26.0.0-beta1'
Al pasar el ratón sobre él, se muestra:
Todas las bibliotecas com.android.support deben usar la especificación de versión exacta (mezclar versiones puede llevar a fallos en tiempo de ejecución). Versiones encontradas 26.1.0, 26.0.0-beta1. Ejemplos incluyen com.android.support:support-compat:26.1.0 y com.android.support:animated-vector-drawable:26.0.0-beta1
Esto es bastante claro: todos los repositorios que dependen de com.android.support deben usar la misma versión. Mire Dependency, com.android.support:appcompat-v7:26.0.0-beta1y com.android.support:support-v4:26.1.0 dos versiones son contradictorias, ¿verdad? Mire el registro de git,26.1.0 esta línea es la nueva, definitivamente es cuando AndroidStudio agrega automáticamente el BlankFragment cuando se crea una nueva clase. Vuelva a mirar el registro de errores, ¿no es también lo mismo lo que dice?
No puedo evitar quejarme de AndroidStudio, si quieres agregar dependencias de versión automáticamente, ¿por qué no verificas la compatibilidad de versión también? De lo contrario, es mejor que no las agregues, que nos las hagamos nosotros mismos. Detesto este tipo de cosas semi-automatizadas, que son muy engañosas.
Además, la gramática del archivo gradle es bastante interesante. Los comentarios son el estilo de C/C++El estilo es el de Python, la declaración de función es el estilo de Python, la expresión Lambda tiene un poco el estilo de C#.
Resumen
Lo mencionado anteriormente es lo que el editor les ha presentado sobre el problema de incompatibilidad de versión después de agregar fragmento en Android, espero que les sea útil. Si tienen alguna pregunta, déjenme un mensaje y responderé a tiempo. También agradezco mucho el apoyo de todos a la página web de tutorial de grito!
Declaración: El contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio web no posee derechos de propiedad, no se ha procesado editorialmente y no asume responsabilidades legales relacionadas. Si encuentra contenido sospechoso de violación de derechos de autor, le invitamos a enviar un correo electrónico a: notice#w proporcionando evidencia relevante.3Declaración: El contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio web no posee derechos de propiedad, no se ha procesado editorialmente y no asume responsabilidades legales relacionadas. Si encuentra contenido sospechoso de violación de derechos de autor, le invitamos a enviar un correo electrónico a: notice#w proporcionando evidencia relevante. Si se verifica, este sitio eliminará inmediatamente el contenido sospechoso de violación de derechos.