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)


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


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.


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">
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.