![]() |
Помогите новичку!
Вложений: 3
Недавно перешёл с Nokia 5310 на Samsung GT I-9001. До этого работал над рогаликом, который успешно писался на MidletPascal. Хочу портировать всё под андроид, но опыта работы с java нет.
Начал делать проект по аналогии с книгой Pragmatic Hello Android. Застрял практически в начале: при вызове метода из другого класса (getTile из MapView) , который возвращает элемент массива, приложение крашится. Понимаю, что ошибка мелкая, но сам ни черта ни понимаю:) PS. Посоветуйте книги по ооп на Java (можно и на английском). |
Ответ: Помогите новичку!
Ну так алгоритм простой, не надо лениться:
1. Посмотреть текст ошибки 2. Подебажить 3. Спросить, указав всю инфу |
Ответ: Помогите новичку!
В том то и дело, что компилирует без ошибок.
|
Ответ: Помогите новичку!
Цитата:
|
Ответ: Помогите новичку!
Крашится скорее всего из-за того, что твой MapView ещё не создан на момент обращения к его методу. Активити нельзя создавать через NEW.
В какой среде разработки ты делаешь проект? Если в эклипсе, то выкладывай всю папку с проектом, а то эти тхт-шки вынуждают всё самому доделывать, а нафиг это нужно. |
Ответ: Помогите новичку!
Цитата:
|
Ответ: Помогите новичку!
Вложений: 1
В основном на телефоне через AIDE пишу.
Вроде переписал код на Eclipse. Проверить не могу: после очистки workspace эмулятор андроид ведёт себя неадекватно. Останавливается на шаге Waiting for HOME ('android.process.acore') to be launched... |
Ответ: Помогите новичку!
Тестировать конечно лучше на настоящем телефоне.
Ошибка у тебя не в коде оказалась, а в том что ты не указал все свои активити в манифесте. В файле AndroidManifest.xml нужно указывать все активити, которые ты собираешься запускать. Я дописал Код:
<activity Про вьюху не заметил когда писал выше. |
Ответ: Помогите новичку!
Вложений: 1
Совсем забыл про манифест. Но проблема не в нём. В оригинале (на AIDE) манифест был дописан. И не работало.
При замене int на MapClass опять крашится. В чём причина? И последний: как убрать полосу состояния при включённом приложении? |
Ответ: Помогите новичку!
Активити создаётся автоматически при старте прилоежения самой ОСью. Тебе не нужно создавать активити самому. В конструкторе активити, тебе нужно указать View, он может быть лайоутом генерированным в эклипсе, или твоим классом. Но тогда он должен иметь в себе реализацию всех методов и т.п.
Также, если ты хочешь заняться графикой, советую сразу смотреть в сторону ОГЛ либо канвасы. ЗЫ, до того как заниматься портами, пройдись по туторам от гугла, разберись как андройд устроен, т.к. это очень отличается от всего другого.. |
Ответ: Помогите новичку!
Вложений: 1
Цитата:
Выкладываю тебе код исправленный, в нём всё работает с MapClass. Цитата:
1. Прописать в AndroidManifest.xml строчку-параметр для активити Код:
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" Код:
super.onCreate(b); Цитата:
|
Ответ: Помогите новичку!
Спасибо всем огромное! Сам без помощи не разобрался бы. Буду выкладывать новые вопросы по мере появления:)
|
Ответ: Помогите новичку!
Вложений: 1
Дописал код, добавил геттеры и сеттеры, но метод fillArea перестал работать. Или не правильно обращаюсь к массиву? Где я ошибся?
Как работать с изобржениями (загрузка, вывод) ? Как работать с таилсетами? На developer.android.com ничего не понимаю:) |
Ответ: Помогите новичку!
Проблемы решены! Есть ли стандартные методы для работы с таилсетами(создание маленького нового изображения из одного большого)?
|
Ответ: Помогите новичку!
В активити Game создан экземпляр hero класса Hero. При нажатии кнопки в MapView(view для Game) создаётся активити Inventory. Как из Inventory получить доступ к hero?
|
Ответ: Помогите новичку!
Цитата:
|
Ответ: Помогите новичку!
То есть нельзя чтобы несколько классов имели доступ к одному и тому же экземпляру класса х?
|
Ответ: Помогите новичку!
Цитата:
|
Ответ: Помогите новичку!
Как вариант, можно создать отдельный класс для хранения глобальных указателей, и через него работать с объектами.
Типа: Код:
public class Globals { Код:
Globals.hero = new Hero("John"); Код:
if(Globals.hero != null && Globals.hero.getHealth() > 10) { |
Ответ: Помогите новичку!
Точно! Спасибо большое! А то я запутался немного))
|
Ответ: Помогите новичку!
Допустим, что в Game создан экземпляр Global:
global = new Global(this); В Global созданы экземпляры 2 разных View. Как в Game задать setContentView() через эти 2 экземпляра? |
Ответ: Помогите новичку!
Научись формировать вопрос, в понятный текст, чтобы он давал читателю представление ЧТО ты пытаешься сделать, и КАК ты это уже попробовал сделать.
Если чётко сформируешь вопрос, то в 90% случаях ответишь на свой же вопрос сразу. Если таки не смог, по крайней мере другие смогут понять вопрос и помочь. |
Ответ: Помогите новичку!
В Game создан экземпляр Global. В Global описываются все остальные классы: объекты и вьюхи для Game (как предложил Жека), так как хочу использовать одну активити и несколько вьюх. Но не получается установать вьюхи для отображения в Game. Если в Global объявляю Game как final то eclipse ругается на конструкторы вьюх (что Game не инициализируется, хотя раньше делал абсолютно так же), если Game без final, то eclipse компилирует без ошибок, но при старте активити Game приложение вылетает. Вот так)
|
Ответ: Помогите новичку!
Я не предлагал создавать global через new. Я предлагал сделать все его члены статическими, чтобы осуществлять доступ не через экземплял глобал'а, а через имя класса. И не финальными они должны быть, т.к. финальные поля нужно либо в объявлении инициализировать, либо в конструкторе, но такой вариант не подходит, т.к. ты заранее не захочешь всё создавать в конструкторе и не сможешь (в случае с активити).
Делай так в классе Global: Код:
public static Game game; Код:
Global.game = this; И всё, однажды присвоив значение, сможешь везде с ним работать. |
Ответ: Помогите новичку!
Вроде понял. Буду пробовать.
|
Ответ: Помогите новичку!
Спасибо, Жека! Всё работает!:)
Как можно отследить/заблокировать нажатие кнопки "назад"/"меню"? |
Ответ: Помогите новичку!
Посмотри статейку: Создание меню
|
Ответ: Помогите новичку!
Как можно сделать прокрутку? Нужно для прокрутки карты, которая не влезает на экран. Пробовал через MotionEvent.ACTION_MOVE, но получается какая-то ересь.
|
Ответ: Помогите новичку!
Я для прокрутки использую ScrollView.
В методе onCreate: PHP код:
|
Ответ: Помогите новичку!
А как сделать это без LinearLayout? То есть я использую
case MotionEvent.ACTION_DOWN: x = (int)event.getX(); y = (int)event.getY(); для определения области касания, так как не использую кнопки. Можно ли реализовать "сырую" (с получением и ручной обработкой координат) прокрутку, без использования layout? |
Ответ: Помогите новичку!
Вручную вот так мне видится решение:
Тебе нужно расширить метод onTouchEvent, на событие ACTION_DOWN запоминать координаты нажатия, как ты и делаешь, и затем на событие ACTION_MOVE вычислять разность координат, далее вручную всё сдвигать на полученные dx, dy. Код:
case MotionEvent.ACTION_DOWN: Код:
int min = 5; |
Ответ: Помогите новичку!
Ща делаю на Юнити 2D игруху и компилю в .apk файл. Нужен легкий и простой эмулятор андроида для ПиСи под ВиндуХР, который может запускать .apk файлы. Посоветуйте и порекомендуйте плиз, чтобы зря не тестить всякий хлам...
|
Ответ: Помогите новичку!
В комплект сдк входит AVD (android virtual device)
http://www.androidteach.ru/2012/05/avd.html вместо первого шага тебе просто щелкнуть на AVD Manager в меню пуск Но мне не лень тестить на чистом железе (какая разница, все равно процесс установки проходит через adb, скорость слегка отличается) |
Ответ: Помогите новичку!
Лучше конечно на железе, т.к. эмулятор обычно очень тормозит, т.к. полностью эмулируют другую структуру процессора - а это геморой конкретный..
|
Ответ: Помогите новичку!
Цитата:
|
Ответ: Помогите новичку!
Цитата:
|
Ответ: Помогите новичку!
Ребята, я совсем немного знаю Java.
Прошу сильно по голове не бить. Но пробую написать чтонибудь под андройд. Вот сее творение: Код:
package com.example.Test; Код:
package com.example.Test; Но как вызвать перересовку при касании незнаю. Можете пояснить немного мне как это сделать. и вообще правильней организовать код. я так понимаю события касания лучше в оддельном классе? А отрисовку в другом. Как мне обратиться потом к методу отрисовки? |
Часовой пояс GMT +4, время: 09:51. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot