Форум программистов, компьютерный форум CyberForum.ru

Передача адреса изображения для ViewImage - Android

Восстановить пароль Регистрация
 
sincov95
0 / 0 / 0
Регистрация: 31.03.2015
Сообщений: 71
22.10.2016, 22:47     Передача адреса изображения для ViewImage #1
Здравствуйте.


Имеется массив адресов (как я понял):
Java
1
2
private static final int[] icons = {android.R.drawable.ic_popup_reminder, android.R.drawable.ic_menu_add,
           // android.R.drawable.ic_menu_delete};
Который для каждого пункта в списке задает свое изображение:
Java
1
 holder.mBgImage.setImageResource(item.getImageResId());
Но как только я пытаюсь уйти от стандартных андроидовских изображений
Java
1
private static final int[] icons = {R.drawable.mb, R.drawable.yb, R.drawable.hb};
У меня возникает ошибка. И не могу понять с чем она связана, возможно, что изображения другого формата (png), и не правильно инициализирую массив, но я не нашел в инете как правильно...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
shavuz
56 / 62 / 10
Регистрация: 29.01.2014
Сообщений: 299
23.10.2016, 07:30     Передача адреса изображения для ViewImage #2
можно посмотреть лог ошибки?
может быть нужно вот так: int id = context.getResources().getIdentifier(resourceName, "drawable",
context.getPackageName());
sincov95
0 / 0 / 0
Регистрация: 31.03.2015
Сообщений: 71
23.10.2016, 10:57  [ТС]     Передача адреса изображения для ViewImage #3
Цитата Сообщение от shavuz Посмотреть сообщение
может быть нужно вот так
Это сработало только с небольшой поправкой
Java
1
2
static int id3 = pCreateActivity.getContext().getResources().getIdentifier(String.valueOf(R.drawable.hb), "drawable",
            pCreateActivity.getContext().getPackageName());
Если кому потом понадобиться контекст я брал из основного активити, и String.valueOf(R.drawable.hb) вот эту часть мне sdk поправила.
Паблито
не спать!
1794 / 1528 / 475
Регистрация: 12.05.2014
Сообщений: 5,574
Завершенные тесты: 1
23.10.2016, 11:03     Передача адреса изображения для ViewImage #4
что за бред?
делать так, как посоветовали выше - криво

у ImageView есть метод, который принимает ID картинки из ресурсов, и он, внезапно!! называется setImageResource
туда надо так и писать R.drawable.имя_картинки

Добавлено через 1 минуту
и да, контекст можно брать не из активити, а прямо с любой картинки, хоть с той же imageView.getContext()
и еще
Цитата Сообщение от sincov95 Посмотреть сообщение
понадобиться
http://tsya.ru/
sincov95
0 / 0 / 0
Регистрация: 31.03.2015
Сообщений: 71
23.10.2016, 11:06  [ТС]     Передача адреса изображения для ViewImage #5
А нет! Очень странно: в эмуляторе nexus с версией андроида 5.1.1 работает. А на живом oneplus 1 с 6.0.1 - нет.

Цитата Сообщение от Паблито Посмотреть сообщение
у ImageView есть метод, который принимает ID картинки из ресурсов, и он, внезапно!! называется setImageResource
Посмотрите, у меня в первом посте указан такой метод, но не получается нормально ID передать.

Добавлено через 1 минуту
Цитата Сообщение от Паблито Посмотреть сообщение
понадобиться
http://tsya.ru/
Люди иногда опечатываются, не стоит быть таким "умным".
shavuz
56 / 62 / 10
Регистрация: 29.01.2014
Сообщений: 299
23.10.2016, 11:07     Передача адреса изображения для ViewImage #6
а какой лог получаете на живом девайсе? может банально слишком большая картинка и не влазит в вью
Паблито
не спать!
1794 / 1528 / 475
Регистрация: 12.05.2014
Сообщений: 5,574
Завершенные тесты: 1
23.10.2016, 11:10     Передача адреса изображения для ViewImage #7
Цитата Сообщение от sincov95 Посмотреть сообщение
Посмотрите, у меня в первом посте указан такой метод, но не получается нормально ID передать.
я все вижу
тебе уже написали выше - для точной диагностики надо показывать лог ошибки
Цитата Сообщение от sincov95 Посмотреть сообщение
Люди иногда опечатываются, не стоит быть таким "умным".
почему? ты хочешь об этом поговорить?
sincov95
0 / 0 / 0
Регистрация: 31.03.2015
Сообщений: 71
23.10.2016, 11:16  [ТС]     Передача адреса изображения для ViewImage #8
И еще, вот Вы поумничали, а по делу ничего и не написали. Проблема в инициализации массива.

Добавлено через 3 минуты
В эмуляторе работает даже так нормально без всяких контекстов:
Java
1
private static final int[] icons = {R.drawable.milky2, R.drawable.yb, R.drawable.hb};

Лог
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
FATAL EXCEPTION: main
                                                   Process: ru.op.pmq, PID: 21052
                                                   Theme: themes:{com.android.settings=overlay:com.holocon.mayur.theme, default=overlay:com.ngocgiap.lgg4theme, iconPack:com.ngocgiap.lgg4theme, fontPkg:com.ngocgiap.lgg4theme, com.android.systemui=overlay:com.ngocgiap.lgg4theme, com.android.systemui.navbar=overlay:com.ngocgiap.lgg4theme}
                                                   java.lang.OutOfMemoryError: Failed to allocate a 166490364 byte allocation with 16774368 free bytes and 110MB until OOM
                                                       at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                                                       at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
                                                       at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
                                                       at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
                                                       at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080)
                                                       at android.content.res.Resources.loadDrawableForCookie(Resources.java:2730)
                                                       at android.content.res.Resources.loadDrawable(Resources.java:2635)
                                                       at android.content.res.Resources.getDrawable(Resources.java:845)
                                                       at android.content.res.Resources.getDrawable(Resources.java:820)
                                                       at android.support.v7.widget.ResourcesWrapper.getDrawable(ResourcesWrapper.java:133)
                                                       at android.content.Context.getDrawable(Context.java:458)
                                                       at android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:26)
                                                       at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:344)
                                                       at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:197)
                                                       at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:185)
                                                       at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)
                                                       at android.support.v7.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:69)
                                                       at android.support.v7.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:78)
                                                       at ru.op.pmq.adapters.DerpAdapter.onBindViewHolder(DerpAdapter.java:57)
                                                       at ru.op.pmq.adapters.DerpAdapter.onBindViewHolder(DerpAdapter.java:24)
                                                       at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5825)
                                                       at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5858)
                                                       at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5094)
                                                       at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4970)
                                                       at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029)
                                                       at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1414)
                                                       at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377)
                                                       at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578)
                                                       at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3315)
                                                       at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2843)
                                                       at android.view.View.measure(View.java:18799)
                                                       at android.support.v4.widget.NestedScrollView.measureChildWithMargins(NestedScrollView.java:1411)
                                                       at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                       at android.support.v4.widget.NestedScrollView.onMeasure(NestedScrollView.java:479)
                                                       at android.view.View.measure(View.java:18799)
                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                       at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:700)
                                                       at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:90)
                                                       at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1364)
                                                       at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:765)
                                                       at android.view.View.measure(View.java:18799)
                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                       at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                    at android.support.v7.widget.ContentFrameLayout.onMeasure(Cont
vxg
23.10.2016, 11:18
  #9

Не по теме:

sincov95, вы не правы,все что было написано имеет отношение к вашему коду, то что вы запнулись раньше чем налетели на указанные ошибки ничего не меняет

shavuz
56 / 62 / 10
Регистрация: 29.01.2014
Сообщений: 299
23.10.2016, 11:20     Передача адреса изображения для ViewImage #10
сделайте largeheap в манифесте
sincov95
0 / 0 / 0
Регистрация: 31.03.2015
Сообщений: 71
23.10.2016, 11:23  [ТС]     Передача адреса изображения для ViewImage #11
Цитата Сообщение от shavuz Посмотреть сообщение
сделайте largeheap в манифесте
Сработало.
Паблито
23.10.2016, 11:24
  #12

Не по теме:

еще один "ценный" совет
но я пожалуй действительно свалю из темы, ТС очень умен, настолько умен, что не может отловить элементарную ошибку и спорит по каждому поводу

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2016, 11:35     Передача адреса изображения для ViewImage
Еще ссылки по теме:

Android CustomView разные изображения для разных экранов - одна система координат - Как?
Android Программное получение белого IP адреса
Как вывести карту и маркер для определения адреса? Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
sincov95
0 / 0 / 0
Регистрация: 31.03.2015
Сообщений: 71
23.10.2016, 11:35  [ТС]     Передача адреса изображения для ViewImage #13
Оказалось, что одно из изображений было слишком большим, не углядел. Обошлось даже без android:largeHeap="true".
Спасибо shavuz.

Добавлено через 4 минуты
Цитата Сообщение от Паблито Посмотреть сообщение
еще один "ценный" совет
но я пожалуй действительно свалю из темы, ТС очень умен, настолько умен, что не может отловить элементарную ошибку и спорит по каждому поводу
Хотел простынь написать, но это Ваше дело. Я на каждый Ваш ответ писал свои уточняющие комментарии.
Yandex
Объявления
23.10.2016, 11:35     Передача адреса изображения для ViewImage
Ответ Создать тему
Опции темы

Текущее время: 18:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru