Умаялся искать ошибку.

Интерфейс, диалоги, темы, стили, меню
Ответить
18f46k20
Сообщения: 14
Зарегистрирован: 09 апр 2014, 00:22

Умаялся искать ошибку.

Сообщение 18f46k20 » 09 апр 2014, 20:11

Добрый день или вечер.
Не понимаю что за ошибка и от чего вылазит.
Появляется ошибка если я перемещаю куда нибудь определённый элемент например любую кнопку в сторону или чуть вниз.
Например textView перетаскиваю ошибки нет и то не всегда, в общем как то надо по определённому расставить элементы и тогда появляется.
Из-за этого не могу я расставить кнопки и прочие элементы как мне хочется.
Я выкинул все лэйауты и сделал спейс лэйаут. Просто задал жёстко параметры и вообще всё переглючило.
Компилируется без ошибки но не запускается приложение, вылетает просто "В приложении "Coffee" произошла ошибка".

Лог вот что выдаёт.

04-09 21:03:54.130: E/AndroidRuntime(18247): FATAL EXCEPTION: main
04-09 21:03:54.130: E/AndroidRuntime(18247): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.btuse/com.example.btuse.MainActivity}: java.lang.ClassCastException: android.widget.ImageButton cannot be cast to android.widget.Button
04-09 21:03:54.130: E/AndroidRuntime(18247): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2197)
04-09 21:03:54.130: E/AndroidRuntime(18247): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2247)
04-09 21:03:54.130: E/AndroidRuntime(18247): at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-09 21:03:54.130: E/AndroidRuntime(18247): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1249)
04-09 21:03:54.130: E/AndroidRuntime(18247): at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 21:03:54.130: E/AndroidRuntime(18247): at android.os.Looper.loop(Looper.java:137)
04-09 21:03:54.130: E/AndroidRuntime(18247): at android.app.ActivityThread.main(ActivityThread.java:5063)
04-09 21:03:54.130: E/AndroidRuntime(18247): at java.lang.reflect.Method.invokeNative(Native Method)
04-09 21:03:54.130: E/AndroidRuntime(18247): at java.lang.reflect.Method.invoke(Method.java:511)
04-09 21:03:54.130: E/AndroidRuntime(18247): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-09 21:03:54.130: E/AndroidRuntime(18247): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-09 21:03:54.130: E/AndroidRuntime(18247): at dalvik.system.NativeStart.main(Native Method)
04-09 21:03:54.130: E/AndroidRuntime(18247): Caused by: java.lang.ClassCastException: android.widget.ImageButton cannot be cast to android.widget.Button
04-09 21:03:54.130: E/AndroidRuntime(18247): at com.example.btuse.MainActivity.onCreate(MainActivity.java:73)
04-09 21:03:54.130: E/AndroidRuntime(18247): at android.app.Activity.performCreate(Activity.java:5150)
04-09 21:03:54.130: E/AndroidRuntime(18247): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-09 21:03:54.130: E/AndroidRuntime(18247): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-09 21:03:54.130: E/AndroidRuntime(18247): ... 11 more

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Умаялся искать ошибку.

Сообщение Mikhail_dev » 09 апр 2014, 20:50

java.lang.ClassCastException: android.widget.ImageButton cannot be cast to android.widget.Button
У вас кнопки ImageButton, а вы их приводите к типу Button, что является двумя разными кнопками.

siberprogs
Сообщения: 93
Зарегистрирован: 05 мар 2014, 06:20

Re: Умаялся искать ошибку.

Сообщение siberprogs » 09 апр 2014, 21:24

18f46k20 писал(а):Добрый день или вечер.
Не понимаю что за ошибка и от чего вылазит.
Появляется ошибка если я перемещаю куда нибудь определённый элемент например любую кнопку в сторону или чуть вниз.
Например textView перетаскиваю ошибки нет и то не всегда, в общем как то надо по определённому расставить элементы и тогда появляется.
Из-за этого не могу я расставить кнопки и прочие элементы как мне хочется.
Я так понимаю, что есть опыт работы с чем-то типа Visual Studio.
Отличие в том, что в android нет формы, и поэтому тут нельзя просто ткнуть кнопку в любое место, а потом передвинуть.
За расположение элементов здесь отвечают разные виды laiout.
О них можно почитать в этих уроках:
Урок 6. Виды Layouts. Ключевые отличия и свойства.
Урок 7. Layout параметры для View-элементов.
Linux Fedora RFRemix + Intellij Idea

18f46k20
Сообщения: 14
Зарегистрирован: 09 апр 2014, 00:22

Re: Умаялся искать ошибку.

Сообщение 18f46k20 » 09 апр 2014, 23:48

Конечно же смотрел я эти уроки.
Только я не пойму как кнопка ImageButton стала обычной кнопкой когда я её передвинул чуть в сторону?
Даа, конечно пока дебри сильные, по немного разбираюсь конечно но сложновато после других языков. :)

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Умаялся искать ошибку.

Сообщение Mikhail_dev » 10 апр 2014, 09:17

Хороший вопрос. Непонятно почему кнопка преобразуется в другой элемент.
RelativeLayout по мне самый удобный Layout, который позволяет как угодно расставить элементы относительно чего угодно. По сути, в андроиде устоялись два лейаута, это LinearLayout и RelativeLayout.

AliMan
Сообщения: 34
Зарегистрирован: 18 мар 2014, 19:11

Re: Умаялся искать ошибку.

Сообщение AliMan » 10 апр 2014, 11:10

m090050 писал(а):По сути, в андроиде устоялись два лейаута, это LinearLayout и RelativeLayout.

Согласен

18f46k20
Сообщения: 14
Зарегистрирован: 09 апр 2014, 00:22

Re: Умаялся искать ошибку.

Сообщение 18f46k20 » 10 апр 2014, 12:24

В общем я разобрался. :) Оказывается виноват был телефон.
Надо было так.

Код: Выделить всё

 Button btnOn, btnOff, bStartProcess;
	  ImageButton iB1,iB2,iB3,iB4;
	  
А я сделал так и еще меня отвлекли и я совсем забыл это.

Код: Выделить всё

 Button btnOn, btnOff, bStartProcessб iB1,iB2,iB3,iB4;
	   
Всех благодарю, без подсказки искал бы еще сутки :)
Перевод с английского кривой и я не мог понять что происходит.

Использую FrameLayout. Мне проще по координатам распихивать строго.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Умаялся искать ошибку.

Сообщение Mikhail_dev » 10 апр 2014, 13:25

В общем я разобрался. :) Оказывается виноват был телефон.
18f46k20 писал(а): Надо было так.

Код: Выделить всё

 Button btnOn, btnOff, bStartProcess;
	  ImageButton iB1,iB2,iB3,iB4;
	  
А я сделал так и еще меня отвлекли и я совсем забыл это.

Код: Выделить всё

 Button btnOn, btnOff, bStartProcessб iB1,iB2,iB3,iB4;
	   
Да конечно же телефон был виноват, негодяй! :lol:
Использую FrameLayout. Мне проще по координатам распихивать строго.
FrameLayout обычно используется как контейнер для вкладывания туда какого-нибудь одного элемента, чтобы он полностью заполнил FrameLayout. И какой смысл по координатам, если они зависят от самого устройства? RelativeLayout тут, без вариантов.

siberprogs
Сообщения: 93
Зарегистрирован: 05 мар 2014, 06:20

Re: Умаялся искать ошибку.

Сообщение siberprogs » 10 апр 2014, 13:40

RelativeLayout тот еще layout. В нем нужно точно знать что куда ставить или ставить элементы относительно краев экрана, а то по умолчанию они цепляются к другим элементам. И если вздумается потом какую-нибудь кнопочку передвинуть, можно получить неожиданный эффект. Мне проще скомбинировать несколько LinearLayout, можно получить набор любой сложности. Ну это конечно лично мое мнение.
Linux Fedora RFRemix + Intellij Idea

18f46k20
Сообщения: 14
Зарегистрирован: 09 апр 2014, 00:22

Re: Умаялся искать ошибку.

Сообщение 18f46k20 » 10 апр 2014, 13:46

Ну не знаю, всё расставилось чётко. Дело в том что в данный момент программа будет работать только на 2-х устройствах, мобильнике и планшете.
Потом координаты не в пикселях а в процентном соотношении. Поэтому все равно на каком устройстве будет работать.
Я пробовал на планшете 1920x1200 и пробовал на мобиле с низким разрешением и везде работает и никуда не смещается. :)
Ладно это особо не важно уже, главное работает. :)

Ответить