Android: Para que é usado o android.R.id.content?


140

Alguém poderia explicar o significado de "android.R.id.content"?

Como está sendo usado?

http://developer.android.com não tem nenhuma explicação.

conteúdo público estático final int
Desde: Nível 1 da API

Valor constante: 16908290 (0x01020002)


94
android.R.id.contentfornece o elemento raiz de uma visualização, sem precisar saber seu nome / tipo / ID real. Confira stackoverflow.com/questions/4486034/…
Philipp Reichart 15/10

2
Isso é útil em transações de fragmento como: mFragmentTransaction.add (android.R.id.content, myFragment);
IgorGanapolsky

@IgorGanapolsky Um aplicativo de exemplo executa esse tipo de transação de forma condicional: if(fragmentManager.findFragmentById(android.R.id.content)==null) {fragmentManager.beginTransaction(android.R.id.content, list).add().commit();}você pode dizer qual Viewelemento raiz é esse?
Solace

@Zarah Tem certeza de que sua sintaxe está correta aqui e compilável?
IgorGanapolsky

Qual é a classe do layout associada android.R.id.content ?
Sushant

Respostas:


98

Como Philipp Reichart comentou :

android.R.id.contentfornece o elemento raiz de uma visualização, sem precisar saber seu nome / tipo / ID real. Confira http://stackoverflow.com/questions/4486034/android-how-to-get-root-view-from-current-activity


5
Um exemplo prático de seu uso, pode ser encontrada no nº 2: developer.android.com/guide/topics/ui/actionbar.html#Tabs
OrhanC1

4
"fornece o elemento raiz de uma visualização , sem ter que saber seu nome / tipo / ID real" Como ele sabe de qual visualização é a que queremos o elemento raiz.
Solace

21

O android.R.id.contentvalor do ID indica ViewGrouptoda a área de conteúdo de um Activity.

Pode ser usado com 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();
        }
    }

    ...

}

O código acima irá inserir o Viewcriado por Fragmentno ViewGroupidentificado por android.R.id.content.


9

Os designers do Google desenvolvem o Android UX com diretrizes de design específicas ou recomendadas. O layout android.R.id.content define um layout linear com alguns atributos que o Android acredita serem um bom padrão.

Assim, o carregamento da visualização raiz de um Fragment Manager com android.R.id.content garante que essas diretrizes sejam implementadas.

NOTA: Este layout definiu o atributo: android: addStatesFromChildren = "true" para permitir que fragmentos filhos substituam atributos nesta visualização root.

A partir da versão 19, android.R.id.content é definido em um arquivo: 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">
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.