Android: для чего используется android.R.id.content?


144

Кто-нибудь может объяснить значение "android.R.id.content"?

Как это используется?

http://developer.android.com не имеет объяснений.

public static final int content
С: API уровня 1

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


94
android.R.id.contentдает вам корневой элемент представления без необходимости знать его фактическое имя / тип / идентификатор. Проверьте stackoverflow.com/questions/4486034/…
Филипп Рейхарт

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

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

@Zarah Вы уверены, что ваш синтаксис здесь правильный и компилируемый?
Игорь Ганапольский

С каким классом связан макет android.R.id.content ?
Sushant

Ответы:


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
"дает вам корневой элемент представления , без необходимости знать его фактическое имя / тип / идентификатор" Как узнать, для какого представления нам нужен корневой элемент.
Solace

23

Значение android.R.id.contentID указывает на 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", чтобы дочерние фрагменты могли перезаписывать атрибуты в этом корневом представлении.

Начиная с версии 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.