Android: do czego służy zawartość android.R.id.content?

141

Czy ktoś mógłby wyjaśnić znaczenie „android.R.id.content”?

Jak jest używany?

http://developer.android.com nie ma żadnego wyjaśnienia.

public static final int content
Od: API Poziom 1

Stała wartość: 16908290 (0x01020002)

user996659
źródło
94
android.R.id.contentpodaje główny element widoku bez konieczności znajomości jego rzeczywistej nazwy / typu / identyfikatora. Sprawdź stackoverflow.com/questions/4486034/…
Philipp Reichart
2
Jest to przydatne w transakcjach fragmentarycznych, takich jak: mFragmentTransaction.add (android.R.id.content, myFragment);
IgorGanapolsky
@IgorGanapolsky Przykładowa aplikacja wykonuje ten rodzaj transakcji w trybie warunkowym: if(fragmentManager.findFragmentById(android.R.id.content)==null) {fragmentManager.beginTransaction(android.R.id.content, list).add().commit();}Czy możesz określić, który Viewelement główny to jest?
Solace
@Zarah Czy na pewno twoja składnia jest poprawna i daje się skompilować?
Igor Ganapolsky
Z jaką klasą jest powiązany układ android.R.id.content ?
Sushant

Odpowiedzi:

100

Jak powiedział Philipp Reichart :

android.R.id.contentdaje element główny widoku bez konieczności znajomości jego rzeczywistej nazwy / typu / identyfikatora. Sprawdź http://stackoverflow.com/questions/4486034/android-how-to-get-root-view-from-current-activity

Gili
źródło
5
Praktyczny przykład jego użycia można znaleźć w akapicie 2: developer.android.com/guide/topics/ui/actionbar.html#Tabs
OrhanC1
4
„podaje element główny widoku , bez konieczności znajomości jego rzeczywistej nazwy / typu / identyfikatora”. Skąd wie, który widok ma mieć element główny.
Solace
22

Plik android.R.id.content ID wskazuje ViewGroupcały obszar zawartości pliku Activity.

Może być używany z 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();
        }
    }

    ...

}

Powyższy kod wstawi Viewutworzony przez Fragmentdo ViewGroupidentyfikatora android.R.id.content.

DYS
źródło
9

Projektanci Google opracowują Android UX, uwzględniając określone lub zalecane wytyczne projektowe. Układ android.R.id.content definiuje linearny układ z kilkoma atrybutami, które Android uważa za dobry standard.

W ten sposób załadowanie widoku głównego menedżera fragmentów za pomocą android.R.id.content zapewnia implementację tych wskazówek.

UWAGA: Ten układ ustawił atrybut: android: addStatesFromChildren = "true", aby umożliwić fragmentom podrzędnym nadpisywanie atrybutów w tym widoku głównym.

Od wersji 19 android.R.id.content jest zdefiniowany w pliku: 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
źródło