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

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

Добавлено: 09 апр 2014, 20:11
18f46k20
Добрый день или вечер.
Не понимаю что за ошибка и от чего вылазит.
Появляется ошибка если я перемещаю куда нибудь определённый элемент например любую кнопку в сторону или чуть вниз.
Например 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

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

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

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

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

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

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

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

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

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

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

Согласен

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 10 апр 2014, 13:40
siberprogs
RelativeLayout тот еще layout. В нем нужно точно знать что куда ставить или ставить элементы относительно краев экрана, а то по умолчанию они цепляются к другим элементам. И если вздумается потом какую-нибудь кнопочку передвинуть, можно получить неожиданный эффект. Мне проще скомбинировать несколько LinearLayout, можно получить набор любой сложности. Ну это конечно лично мое мнение.

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

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