2011-10-15 26 views
110

¿Alguien podría explicar el significado de "android.R.id.content"?Android: ¿Para qué se utiliza android.R.id.content?

¿Cómo se está utilizando?

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

público static final int contenido desde: API Nivel 1

Valor Constante: 16908290 (0x01020002)

+81

'android.R.id.content' le proporciona el elemento raíz de una vista, sin tener que conocer su nombre/tipo/ID real.Consulte http://stackoverflow.com/questions/4486034/android-how-to-get-root-view-from-current-activity –

+1

Esto es útil en transacciones de fragmento como: mFragmentTransaction.add (android.R.id .content, myFragment); –

+0

@IgorGanapolsky Una aplicación de ejemplo realiza este tipo de transacción en un condicional: 'if (fragmentManager.findFragmentById (android.R.id.content) == null) {fragmentManager.beginTransaction (android.R.id.content, list). add(). commit();} '¿Puedes decir qué elemento raíz de 'View' es esto? – Solace

Respuesta

75

conversión de comentario de Philipp Reichart en una respuesta:

android.R.id. contenido le da el elemento raíz de una vista, sin tener que saber su nombre/tipo/ID real. Check out Get root view from current activity

+4

Un ejemplo práctico de su uso se puede encontrar en el párrafo 2: http://developer.android.com/guide/topics/ui/actionbar.html#Tabs – OrhanC1

+2

"le da el elemento raíz _de una vista_, sin tener que saberlo su nombre/tipo/ID real "¿Cómo sabe qué vista es la que queremos que el elemento raíz de. – Solace

7

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 linearlayout con algunos atributos que Android considera que son un buen estándar.

Por lo tanto, la carga de la vista raíz de 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 los atributos en esta vista de raíz.

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"> 
13

El valor ID android.R.id.content indica el ViewGroup de toda el área de contenido de un Activity.

Puede ser utilizado 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 View creado por Fragment en el ViewGroup identificado por android.R.id.content.

0

Acabo de tener un problema similar. Codificación R.id.content (como por Andriod Starting Another Activity - Display the Message)

La codificación tutorial es:

RelativeLayout layout = (RelativeLayout) findViewById(R.id.content); 

Esto fracasó para compilar, comprueba un número de veces. Sin embargo, me di cuenta de que Android Studio pedía/sugería conent (primera letra t, cuarta carta faltaba). Luego utilicé esto, es decir, contenido codificado en lugar de contenido (como a continuación) y funcionó la compilación y la ejecución posterior en mi tableta.

RelativeLayout layout = (RelativeLayout) findViewById(R.id.content); 

estoy usando Android Studio en Windows 7 Build # AI-141.2456560 construido el 1 de diciembre el año 2015 utilizando JRE 1.7.0_70-b15 amd64.

Cuestiones relacionadas