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)

user996659
quelle
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

Gili
quelle
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.

DYS
quelle
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">
TheChrisONeil
quelle