forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Android (http://forum.boolean.name/forumdisplay.php?f=150)
-   -   Помогите новичку! (http://forum.boolean.name/showthread.php?t=16699)

cyberblut 15.05.2012 09:30

Ответ: Помогите новичку!
 
Цитата:

Сообщение от ratum (Сообщение 227997)
В активити Game создан экземпляр hero класса Hero. При нажатии кнопки в MapView(view для Game) создаётся активити Inventory. Как из Inventory получить доступ к hero?

никак

ratum 15.05.2012 17:54

Ответ: Помогите новичку!
 
То есть нельзя чтобы несколько классов имели доступ к одному и тому же экземпляру класса х?

cyberblut 15.05.2012 18:42

Ответ: Помогите новичку!
 
Цитата:

Сообщение от ratum (Сообщение 228018)
То есть нельзя чтобы несколько классов имели доступ к одному и тому же экземпляру класса х?

Нельзя, чтобы контексто-зависимые классы имели доступ друг к другу. Из активити A нельзя получить доступ к активити B напрямую. Равно как и к их вьюхам.

Жека 16.05.2012 07:23

Ответ: Помогите новичку!
 
Как вариант, можно создать отдельный класс для хранения глобальных указателей, и через него работать с объектами.
Типа:
Код:

public class Globals {
        public static Hero hero;
}

Далее в коде в любом классе пишем:
Код:

Globals.hero = new Hero("John");
Ещё в другом месте обращаемся к свойствам:
Код:

if(Globals.hero != null && Globals.hero.getHealth() > 10) {
  //.....
}

Вместо Globals можно написать покороче имя для удобства, например G.

ratum 16.05.2012 18:59

Ответ: Помогите новичку!
 
Точно! Спасибо большое! А то я запутался немного))

ratum 17.05.2012 18:50

Ответ: Помогите новичку!
 
Допустим, что в Game создан экземпляр Global:

global = new Global(this);

В Global созданы экземпляры 2 разных View. Как в Game задать setContentView() через эти 2 экземпляра?

moka 18.05.2012 00:35

Ответ: Помогите новичку!
 
Научись формировать вопрос, в понятный текст, чтобы он давал читателю представление ЧТО ты пытаешься сделать, и КАК ты это уже попробовал сделать.
Если чётко сформируешь вопрос, то в 90% случаях ответишь на свой же вопрос сразу. Если таки не смог, по крайней мере другие смогут понять вопрос и помочь.

ratum 18.05.2012 01:12

Ответ: Помогите новичку!
 
В Game создан экземпляр Global. В Global описываются все остальные классы: объекты и вьюхи для Game (как предложил Жека), так как хочу использовать одну активити и несколько вьюх. Но не получается установать вьюхи для отображения в Game. Если в Global объявляю Game как final то eclipse ругается на конструкторы вьюх (что Game не инициализируется, хотя раньше делал абсолютно так же), если Game без final, то eclipse компилирует без ошибок, но при старте активити Game приложение вылетает. Вот так)

Жека 18.05.2012 07:02

Ответ: Помогите новичку!
 
Я не предлагал создавать global через new. Я предлагал сделать все его члены статическими, чтобы осуществлять доступ не через экземплял глобал'а, а через имя класса. И не финальными они должны быть, т.к. финальные поля нужно либо в объявлении инициализировать, либо в конструкторе, но такой вариант не подходит, т.к. ты заранее не захочешь всё создавать в конструкторе и не сможешь (в случае с активити).
Делай так в классе Global:
Код:

public static Game game;
Далее, активити нельзя создавать через new, оно само создаётся; отследить создание можно в методе с именем onCreate(Bundle b), в этом методе делай присвоение переменной
Код:

Global.game = this;
И так для всех активити.
И всё, однажды присвоив значение, сможешь везде с ним работать.

ratum 18.05.2012 17:34

Ответ: Помогите новичку!
 
Вроде понял. Буду пробовать.

ratum 21.05.2012 23:53

Ответ: Помогите новичку!
 
Спасибо, Жека! Всё работает!:)

Как можно отследить/заблокировать нажатие кнопки "назад"/"меню"?

Жека 22.05.2012 06:38

Ответ: Помогите новичку!
 
Посмотри статейку: Создание меню

ratum 14.10.2012 21:09

Ответ: Помогите новичку!
 
Как можно сделать прокрутку? Нужно для прокрутки карты, которая не влезает на экран. Пробовал через MotionEvent.ACTION_MOVE, но получается какая-то ересь.

Жека 15.10.2012 10:41

Ответ: Помогите новичку!
 
Я для прокрутки использую ScrollView.
В методе onCreate:
PHP код:

ScrollView sv = new ScrollView(this);
sv.setFillViewport(true);
LinearLayout lay = new LinearLayout(this);
lay.setOrientation(LinearLayout.VERTICAL);
sv.addView(lay);
//здесь добавляем всё что нужно в лайаут lay
//например 10 кнопок:
int pad 30;
lay.setPadding(padpadpadpad);
Button b;
for(
int k=0;k<10;++k) {
    
= new Button(this);
    
b.setText("Кнопка "+k);
    
b.setId(1000+k);
    
//b.setOnClickListener(ButtonListener);
    
b.setEnabled(== 0);
    
lay.addView(b);
}
setContentView(sv); 


ratum 15.10.2012 18:11

Ответ: Помогите новичку!
 
А как сделать это без LinearLayout? То есть я использую

case MotionEvent.ACTION_DOWN:
x = (int)event.getX();
y = (int)event.getY();

для определения области касания, так как не использую кнопки. Можно ли реализовать "сырую" (с получением и ручной обработкой координат) прокрутку, без использования layout?


Часовой пояс GMT +4, время: 11:32.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot