Ошибка "Идентификатор ресурса не найден" с образцом проекта Android
Я пытаюсь открыть образец Android-проекта - Ящик навигации в Android Studio, но получил ошибку при его создании.
Это шаги для его воспроизведения:
- На странице приветствия Android Studio выберите Импортировать образец кода Android
- Найдите Ящик навигации, выберите его и нажмите "Далее"
- Укажите местоположение проекта и нажмите "Готово"
Ошибка: (43) Идентификатор ресурса не найден для атрибута 'layoutManager' в пакете 'com.example.android.navigationdrawer'
Версия Android Studio - 1.4 Beta 4
Заранее благодарим за помощь.
Ответы
Ответ 1
Компилятор не может найти этот атрибут в activity_navigation_drawer.xml
:
app:layoutManager="LinearLayoutManager"
Чтобы исправить этот
-
Удалите этот атрибут из XML, чтобы ваш Recyclerview выглядел так:
<android.support.v7.widget.RecyclerView
android:id="@+id/left_drawer"
android:scrollbars="vertical"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="left|start"
android:choiceMode="singleChoice"
android:divider="@null"/>
-
нажмите кнопку Gradle Sync
-
В NavigationDrawerActivity
добавьте следующие 2 строки кода в свой OnCreate();
LinearLayoutManager mLinearLayoutmanager = new LinearLayoutManager(this);
mDrawerList.setLayoutManager(mLinearLayoutmanager);
Итак, теперь ваш код выглядит следующим образом:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navigation_drawer);
mTitle = mDrawerTitle = getTitle();
mPlanetTitles = getResources().getStringArray(R.array.planets_array);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (RecyclerView) findViewById(R.id.left_drawer);
LinearLayoutManager mLinearLayoutmanager = new LinearLayoutManager(this);
mDrawerList.setLayoutManager(mLinearLayoutmanager);
....
Удачи.
Edit:
Причина, по которой этот исходный xml-код больше не работает, скорее всего, что пространство имен xmlns:app="http://schemas.android.com/apk/res-auto"
больше не поддерживает атрибут layoutManager
.
Более подробную информацию о пространстве имен можно найти здесь: fooobar.com/questions/49431/...
Ответ 2
Вы, безусловно, можете определить LayoutManagers и многое другое через xml. Вот пример использования собственного GridLayoutManager:
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/posters_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:orientation="vertical"
app:layoutManager="android.support.v7.widget.GridLayoutManager"
app:reverseLayout="false"
app:spanCount="3"
app:stackFromEnd="false" />
Если вы хотите использовать пользовательский LayoutManager, следуйте правилам, указанным здесь:
R.attr.html#layoutManager
Ответ 3
Просто обновите файл build.gradle(модуль) до самой новой версии, я попробовал его, и теперь все в порядке.
ссылки:
https://github.com/googlesamples/android-NavigationDrawer/issues/9
Ответ 4
Вы уверены, что gradle разрешил все зависимости? У меня была такая же проблема, когда я иногда удалял библиотеку поддержки recyclerview из зависимостей:
compile 'com.android.support:recyclerview-v7:25.0.1'