Android: Для чого використовується android.R.id.content?


141

Хтось міг пояснити значення "android.R.id.content"?

Як він використовується?

http://developer.android.com не має жодних пояснень.

загальнодоступний статичний кінцевий вміст int
З: API рівня 1

Постійне значення: 16908290 (0x01020002)


94
android.R.id.contentдає вам кореневий елемент подання, не знаючи його фактичного імені / типу / ідентифікатора. Перевірте stackoverflow.com/questions/4486034/…
Philipp Reichart

2
Це корисно у фрагментах транзакцій, таких як: mFragmentTransaction.add (android.R.id.content, myFragment);
ІгорГанапольський

@IgorGanapolsky Прикладний додаток виконує такий вид транзакцій умовно: if(fragmentManager.findFragmentById(android.R.id.content)==null) {fragmentManager.beginTransaction(android.R.id.content, list).add().commit();}Чи можете ви сказати, який Viewце кореневий елемент?
розрада

@Zarah Ви впевнені, що ваш синтаксис тут правильний і сумісний?
ІгорГанапольський

З чим пов’язаний клас компонування android.R.id.content ?
Сушант

Відповіді:


100

Як прокоментував Філіп Рейхарт :

android.R.id.contentдає вам кореневий елемент подання, не знаючи його фактичного імені / типу / ідентифікатора. Перевірте http://stackoverflow.com/questions/4486034/android-how-to-get-root-view-from-current-activity


5
Практичний приклад його використання можна знайти у пункті 2: developer.android.com/guide/topics/ui/actionbar.html#Tabs
OrhanC1

4
"дає вам кореневий елемент представлення , не знаючи його фактичного імені / типу / ідентифікатора". Як дізнатися, для якого виду ми хочемо кореневий елемент.
розрада

22

Значення android.R.id.contentідентифікатора вказує ViewGroupна всю область вмісту Activity.

Його можна використовувати з 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();
        }
    }

    ...

}

У наведеному вище коді буде вставлено Viewстворене Fragmentв ViewGroupідентифікований android.R.id.content.


9

Дизайнери Google розробляють Android UX із конкретними або рекомендованими рекомендаціями щодо дизайну. Макет android.R.id.content визначає лінійний розклад з кількома атрибутами, які Android вважає хорошим стандартом.

Таким чином, завантаження кореневого виду менеджера фрагментів за допомогою android.R.id.content забезпечує виконання цих керівних принципів.

ПРИМІТКА: Цей макет встановив атрибут: android: addStatesFromChildren = "true", щоб дочірні фрагменти могли перезаписати атрибути в цьому rootview.

З версії 19, android.R.id.content визначено у файлі: 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">
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.