Android: à quoi sert android.R.id.content?

141

N'importe qui pourrait expliquer la signification de "android.R.id.content"?

Comment est-il utilisé?

http://developer.android.com n'a aucune explication.

public static final int content
Depuis: API Niveau 1

Valeur constante: 16908290 (0x01020002)

user996659
la source
94
android.R.id.contentvous donne l'élément racine d'une vue, sans avoir à connaître son nom / type / ID réel. Consultez stackoverflow.com/questions/4486034/…
Philipp Reichart
2
Ceci est utile dans les transactions de fragment comme: mFragmentTransaction.add (android.R.id.content, myFragment);
IgorGanapolsky
@IgorGanapolsky Un exemple d'application effectue ce type de transaction dans un conditionnel: if(fragmentManager.findFragmentById(android.R.id.content)==null) {fragmentManager.beginTransaction(android.R.id.content, list).add().commit();}pouvez-vous dire de quel Viewélément racine s'agit-il?
Solace
@Zarah Etes-vous sûr que votre syntaxe est correcte ici et compilable?
IgorGanapolsky
Quelle est la classe de la mise en page associée android.R.id.content ?
Sushant

Réponses:

100

Comme l'a fait remarquer Philipp Reichart :

android.R.id.contentvous donne l'élément racine d'une vue, sans avoir à connaître son nom / type / ID réel. Consultez http://stackoverflow.com/questions/4486034/android-how-to-get-root-view-from-current-activity

Gili
la source
5
Un exemple pratique de son utilisation se trouve au paragraphe 2: developer.android.com/guide/topics/ui/actionbar.html#Tabs
OrhanC1
4
"vous donne l'élément racine d'une vue , sans avoir à connaître son nom / type / ID réel" Comment sait-il de quelle vue nous voulons l'élément racine.
Solace
22

La android.R.id.contentvaleur de l'ID indique la ViewGrouptotalité de la zone de contenu d'un fichier Activity.

Il peut être utilisé avec 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();
        }
    }

    ...

}

Le code ci-dessus insérera le Viewcréé par Fragmentdans l' ViewGroupidentifié par android.R.id.content.

DYS
la source
9

Les concepteurs de Google développent Android UX avec des directives de conception spécifiques ou recommandées. La mise en page android.R.id.content définit une mise en page linéaire avec quelques attributs qu'Android considère comme un bon standard.

Ainsi, le chargement de la vue racine d'un gestionnaire de fragments avec android.R.id.content garantit la mise en œuvre de ces directives.

REMARQUE: Cette mise en page a défini l'attribut: android: addStatesFromChildren = "true" pour permettre aux fragments enfants d'écraser les attributs dans cette vue racine.

Depuis la version 19, android.R.id.content est défini dans un fichier: 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
la source