Android: ¿Para qué se utiliza android.R.id.content?

140

¿Alguien podría explicar el significado de "android.R.id.content"?

¿Cómo se usa?

http://developer.android.com no tiene ninguna explicación.

contenido int final estático público
desde: API Nivel 1

Valor constante: 16908290 (0x01020002)

usuario996659
fuente
94
android.R.id.contentle proporciona el elemento raíz de una vista, sin tener que conocer su nombre / tipo / ID real. Echa un vistazo a stackoverflow.com/questions/4486034/…
Philipp Reichart
2
Esto es útil en transacciones de fragmentos como: mFragmentTransaction.add (android.R.id.content, myFragment);
IgorGanapolsky
@IgorGanapolsky Una aplicación de ejemplo realiza este tipo de transacción de manera condicional: if(fragmentManager.findFragmentById(android.R.id.content)==null) {fragmentManager.beginTransaction(android.R.id.content, list).add().commit();}¿Puedes decir cuál Viewes el elemento raíz?
Consuelo
@ Zarah ¿Estás seguro de que tu sintaxis es correcta aquí y compilable?
IgorGanapolsky
¿Con qué clase de diseño está asociado android.R.id.content ?
Sushant

Respuestas:

98

Como Philipp Reichart comentó :

android.R.id.contentle proporciona el elemento raíz de una vista, sin tener que conocer su nombre / tipo / ID real. Echa un vistazo a http://stackoverflow.com/questions/4486034/android-how-to-get-root-view-from-current-activity

Gili
fuente
55
Un ejemplo práctico de su uso se puede encontrar en el párrafo 2: developer.android.com/guide/topics/ui/actionbar.html#Tabs
OrhanC1
44
"le proporciona el elemento raíz de una vista , sin tener que saber su nombre / tipo / ID real" ¿Cómo sabe de qué vista es que queremos el elemento raíz?
Consuelo
21

El android.R.id.contentvalor de ID indica la ViewGrouptotalidad del área de contenido de un Activity.

Se puede usar con Fragment:

public class MyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, MyFragment.newInstance())
                .commit();
        }
    }

    ...

}

El código anterior insertará el Viewcreado por Fragmenten el ViewGroupidentificado por android.R.id.content.

DYS
fuente
9

Los diseñadores de Google desarrollan Android UX con pautas de diseño específicas o recomendadas. El diseño android.R.id.content define una distribución lineal con algunos atributos que Android cree que son un buen estándar.

Por lo tanto, cargar la vista raíz de un Fragment Manager con android.R.id.content garantiza que se implementen estas pautas.

NOTA: Este diseño ha establecido el atributo: android: addStatesFromChildren = "true" para permitir que los fragmentos secundarios sobrescriban atributos en esta vista raíz.

A partir de la versión 19, android.R.id.content se define en un archivo: auto_complete_list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/content"
    android:orientation="vertical"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:background="@android:drawable/edit_text"
    android:divider="@android:drawable/divider_horizontal_textfield"
    android:addStatesFromChildren="true">
TheChrisONeil
fuente