tutorial studio programacion móviles llamar fragments entre diferencia desde desarrollo curso aplicaciones activity abrir android android-fragments android-xml xml-attribute

studio - Diseño de la actividad: Clase de fragmento: vs android: atributos de nombre



manual de programacion android pdf (3)

¿Son android: nombre y clase: intercambiables?

Presumiblemente, sí. Solo he usado class , y eso parece ser lo que usan la mayoría de los ejemplos de Google, pero veo dónde usan android:name en algunas muestras. Desafortunadamente, no hay documentación formal y completa para <fragment> .

He leído la documentación sobre Fragments en la Guía del Desarrollador de Android y he visto que a veces especifican la clase para instanciar con el atributo de etiqueta Fragment android: name y alguna vez usan la clase: attribute:

<fragment android:name="com.example.news.ArticleReaderFragment" android:id="@+id/viewer" android:layout_weight="2" android:layout_width="0dp" android:layout_height="match_parent" /> <fragment class="com.example.android.apis.app.FragmentLayout$TitlesFragment" android:id="@+id/titles" android:layout_weight="1" android:layout_width="0px" android:layout_height="match_parent" />

¿Son android: nombre y clase: intercambiables? Si utilizo la función de autocompletado en Eclipse, ambos muestran la misma sugerencia de documentación (es decir, el atributo proporciona el nombre de clase para crear una instancia). Tal vez debe utilizar el segundo cuando la clase que se va a instanciar tiene un nombre que es diferente del nombre del archivo java, como TítulosFragmento que se encuentra en el archivo FragmentLayout.java ? ¿O puedo usar la sintaxis package.fileDOTjava $ Class también con el atributo android: name ?

Me gustaría tener algo de documentación para etiquetas XML y atributos como para las clases de Java de Android (lo he preguntado en otra question ).


Como fuente de Activity.onCreateView dice:

String fname = attrs.getAttributeValue(null, "class"); TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.Fragment); if (fname == null) { fname = a.getString(com.android.internal.R.styleable.Fragment_name); }

Eso aparentemente significa que el programa busca primero el atributo "clase". Y en el fallo se ve el atributo "nombre". Por lo tanto, es cierto usando "clase" si es más eficiente.


Lo siento, todos los expertos están aquí, puedo estar equivocado, pero según mi conocimiento android: el atributo name of fragment se usa para encontrar fragmentos, cuando usamos el método getFragmentByTag () de la clase fragmentManager. también android: el atributo de clase se usa para encontrar la clase de fragmento que generalmente incluimos para el fragmento estático .

Espero que esto ayude ... gracias