Android: Wofür wird android.R.id.content verwendet?


140

Kann jemand die Bedeutung von "android.R.id.content" erklären?

Wie wird es verwendet?

http://developer.android.com hat keine Erklärung.

public static final int content
Seit: API Level 1

Konstanter Wert: 16908290 (0x01020002)


94
android.R.id.contentgibt Ihnen das Stammelement einer Ansicht, ohne den tatsächlichen Namen / Typ / ID kennen zu müssen. Check out stackoverflow.com/questions/4486034/…
Philipp Reichart

2
Dies ist nützlich bei Fragmenttransaktionen wie: mFragmentTransaction.add (android.R.id.content, myFragment);
IgorGanapolsky

@IgorGanapolsky Eine Beispiel-App führt diese Art von Transaktion unter bestimmten Bedingungen aus: if(fragmentManager.findFragmentById(android.R.id.content)==null) {fragmentManager.beginTransaction(android.R.id.content, list).add().commit();}Können Sie erkennen, welches Stammelement Viewdies ist?
Trost

@Zarah Sind Sie sicher, dass Ihre Syntax hier korrekt und kompilierbar ist?
Igor Ganapolsky

Womit ist die Klasse des Layouts verbunden android.R.id.content ?
Sushant

Antworten:


98

Wie Philipp Reichart kommentierte :

android.R.id.contentgibt Ihnen das Stammelement einer Ansicht, ohne den tatsächlichen Namen / Typ / ID kennen zu müssen. Überprüfen Sie http://stackoverflow.com/questions/4486034/android-how-to-get-root-view-from-current-activity


5
Ein praktisches Beispiel für seine Verwendung finden Sie in Absatz 2: developer.android.com/guide/topics/ui/actionbar.html#Tabs
OrhanC1

4
"gibt Ihnen das Stammelement einer Ansicht , ohne den tatsächlichen Namen / Typ / ID kennen zu müssen" Woher weiß es, von welcher Ansicht das Stammelement stammen soll?
Trost

21

Der android.R.id.contentID-Wert gibt den ViewGroupgesamten Inhaltsbereich eines an Activity.

Es kann verwendet werden mit 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();
        }
    }

    ...

}

Der obige Code fügt das Viewerstellte von Fragmentin das ViewGroupidentifizierte durch ein android.R.id.content.


9

Google-Designer entwickeln Android UX mit spezifischen oder empfohlenen Designrichtlinien. Das Layout android.R.id.content definiert ein lineares Layout mit einigen Attributen, die Android für einen guten Standard hält.

Durch das Laden der Stammansicht eines Fragment-Managers mit android.R.id.content wird sichergestellt, dass diese Richtlinien implementiert werden.

HINWEIS: In diesem Layout wurde das Attribut: android: addStatesFromChildren = "true" festgelegt , damit untergeordnete Fragmente Attribute in dieser Stammansicht überschreiben können.

Ab Version 19 ist android.R.id.content in einer Datei definiert: 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">
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.