Страница 1 из 1

Один XML файл в разных папках! Помогите найти ошибку

Добавлено: 04 фев 2014, 23:39
Mikhail_dev
Мне надо один файл использовать в разных папках ресурсов. В документации сказано:
The smallest-width qualifier is available only on Android 3.2 and above. Therefore, you should also still use the abstract size bins (small, normal, large and xlarge) to be compatible with earlier versions. For example, if you want to design your UI so that it shows a single-pane UI on phones but a multi-pane UI on 7" tablets, TVs and other large devices, you'd have to supply these files:

res/layout/main.xml: single-pane layout
res/layout-large: multi-pane layout
res/layout-sw600dp: multi-pane layout
The last two files are identical, because one of them will be matched by Android 3.2 devices, and the other one is for the benefit of tablets and TVs with earlier versions of Android.

To avoid this duplication of the same file for tablets and TVs (and the maintenance headache resulting from it), you can use alias files. For example, you can define the following layouts:

res/layout/main.xml, single-pane layout
res/layout/main_twopanes.xml, two-pane layout
And add these two files:

res/values-large/layout.xml:
<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>
res/values-sw600dp/layout.xml:
<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>
These latter two files have identical content, but they don’t actually define the layout. They merely set up main to be an alias to main_twopanes. Since these files have large and sw600dp selectors, they are applied to tablets and TVs regardless of Android version (pre-3.2 tablets and TVs match large, and post-3.2 will match sw600dp).
создаю папку по примеру "values-sw600dp-land", в нём файл layout, в нём
<item name="a_new_task" type="layout">@layout/a_new_task_twopanes_land</item>
где "a_new_task" имя XML ресурса, которое ожидается в самой программе, а "@layout/a_new_task_twopanes_land" сам ресурс. Всё вроде просто и логично, но приложение крашится с ошибкой о том, что ресурс не был найден. Что я делаю не так?

Re: Один XML файл в разных папках! Помогите найти ошибку

Добавлено: 04 фев 2014, 23:56
altwin
*а сам файл a_new_task_twopanes_land в папке res/layout есть?
*я так понимаю элемент <item ... /> в values не в корне, а внутри тега <resources></resources>?

Re: Один XML файл в разных папках! Помогите найти ошибку

Добавлено: 05 фев 2014, 08:18
Mikhail_dev
*а сам файл a_new_task_twopanes_land в папке res/layout есть?
да, есть. Вот скопировал имя "a_new_task_twopanes_land"
*я так понимаю элемент <item ... /> в values не в корне, а внутри тега <resources></resources>?
Я скопипастил пример у гугла, так что у меня в XML файле только эти 3 строчки (со своими данными)
<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>

altwin, а ты собственно хоть раз реализовывал через ссылки, как написано у гугла? А то может бы глянул как у тебя оно там, а то я у меня даже идей нет, что тут может работать не так.

Re: Один XML файл в разных папках! Помогите найти ошибку

Добавлено: 05 фев 2014, 11:11
altwin
Я предпочитаю использовать fragments вместо alias, но попробывал - работает, тебе нужно просто в item name="main" , указать вместо main <имя layout>, который будет в @layout/<имя layout>

т.е. я создал в папке layout два файла one.xml и two.xml, далее в папке values файл layout.xml:
[syntax=xml]
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="one" type="layout">@layout/one</item>
</resources>

[/syntax]
пробывал менять имена я так понял name="one" должно быть первым в имени файла, т.е. допустимо one_<любое>_<имя>

Re: Один XML файл в разных папках! Помогите найти ошибку

Добавлено: 07 фев 2014, 13:05
Mikhail_dev
Итак, после игры в Шерлока Холмса, всё же удалось выявить проблему.
А проблема собственно в том, что псевдо имя НЕ ДОЛЖНО БЫТЬ именем самого ресурса.
Другими словами, это будет падать
<item name="one" type="layout">@layout/one</item>
А вот так
<item name="one" type="layout">@layout/one_blablabla</item>
или так
<item name="one_blablabla" type="layout">@layout/one</item>
будет работать.
Оох, спасибо кешу гугла за сохраненную статейку, а также этому человеку за помощь в столь мутном вопросе.

Re: Один XML файл в разных папках! Помогите найти ошибку

Добавлено: 07 фев 2014, 13:25
altwin
самое интересное, что похоже на правду, сделал как я сам писал и не компилируется :)
но, что интересно: <item name="spam" type="layout">@layout/one</item> - компилируется т.е. всетаки имя можно ставить любое, главное, чтобы оно не совпадало с именем ресурса.
Нифига не понял я почему он раньше мне не давал использовать другое имя(выделял редактор @layout красным...)... может перезагрузить idea надо было фиг его знает, но вывод для себя сделал, не хочу это использовать :)

Re: Один XML файл в разных папках! Помогите найти ошибку

Добавлено: 07 фев 2014, 13:30
Mikhail_dev
Да да, тут черт ногу сломит. А с другой стороны, а как делать ссылочную связь, дабы не плодить лишние копии файлов?
Есть конечно вариант через include, но ведь он для внутреннего использования. Т.е. он вставляется непосредственно в файл. Тоже некрасиво.

Re: Один XML файл в разных папках! Помогите найти ошибку

Добавлено: 08 фев 2014, 23:14
damager82
altwin писал(а):Тут был бред, читай следующее сообщение...
Справа на своем сообщении должен быть синий крестик для удаления сообщения. У вас есть такой?
Я проверил тестовой не админской учеткой, у меня он отображается.

Re: Один XML файл в разных папках! Помогите найти ошибку

Добавлено: 09 фев 2014, 11:59
altwin
damager82 писал(а):
altwin писал(а):Тут был бред, читай следующее сообщение...
Справа на своем сообщении должен быть синий крестик для удаления сообщения. У вас есть такой?
Я проверил тестовой не админской учеткой, у меня он отображается.
в том то и дело, что нет. На некоторых сообщених в режиме редактирования есть checkbox для удаления, но похоже если после сообщения есть чей то ответ, то удалить я не могу.

P.S. вот написал это сообщение и обратил внимание. что крестик есть. Но только тут, возможно тоже будет, пока никто не ответит или не будет сообщений после.

Re: Один XML файл в разных папках! Помогите найти ошибку

Добавлено: 09 фев 2014, 12:12
rezak90
Я ответил =). Проверяй. Потом своё удалю.
P.S. Кстати проверил на своих старых сообщениях. То действительно кнопка "удалить" доступна только на последнем сообщении.

Re: Один XML файл в разных папках! Помогите найти ошибку

Добавлено: 09 фев 2014, 19:37
altwin
Проверил, можно удалять ... :mrgreen: :)