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

Обращение к функции находящейся не в MainActivity - Android

Восстановить пароль Регистрация
 
 
SkN[i]lpl[e][r]
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 230
29.03.2015, 18:16     Обращение к функции находящейся не в MainActivity #1
Доброго времени суток! Имеется MainActivity.java и HybridMap.java. Мне необходимо при нажатии кнопки обратиться к процедуре в HybridMap. Процедура никакие данные не возвращает, просто нужно выполнение. Пробовал обращаться так:
Java
1
2
3
4
5
6
7
8
9
10
private HybridMap hbr;
//далее уже в обработчке нажатия кнопки
 imgBtn  = (ImageButton) findViewById(R.id.image_button);
        OnClickListener oclBtnIMG = new OnClickListener() {
            @Override
            public void onClick(View v) {
               hbr.dostoprLayers();
            }
        };
        imgBtn.setOnClickListener(oclBtnIMG);
Но при нажатии на кнопку происходит крах программы и ошибка с указанием этой строки. Помогите разобраться как правильно обратиться к этой функции...
Вот класс и моя функция в HybridMap.java:
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
public class HybridMap extends FrameLayout implements MapViewConstants {
//
//здесь обьявление различных переменных и констант
//
public HybridMap(Context context, AttributeSet attrs) {
        super(context, attrs);
//здесь  загрузка карты и ее настройка
}
 
public  void dostoprLayers(){
      GeoPoint point2 = new GeoPoint(gps.getLatitude(), gps.getLongitude());
 
      ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
    
      OverlayItem olItem2 = new OverlayItem("Here", "SampleDescription", point2);
      Drawable newMarker2 = this.getResources().getDrawable(R.drawable.flag_green);
      olItem2.setMarker(newMarker2);
      items.add(olItem2);
     
      this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(items,
              new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
                  @Override
                  public boolean onItemSingleTapUp(final int index,
                                                   final OverlayItem item) {
                    
                      mv.getOverlays().remove(mMyLocationOverlay);
                      mv.invalidate();
 
                      return true; 
                  }
 
                  @Override
                  public boolean onItemLongPress(final int index,
                                                 final OverlayItem item) {
                     
                      return false;
                  }
              }, resourceProxy);
      this.mv.getOverlays().add(this.mMyLocationOverlay);
      mv.invalidate();
  }
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dajver
 Аватар для dajver
406 / 270 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
30.03.2015, 12:51     Обращение к функции находящейся не в MainActivity #21
Может у вас context == null? Пишите лучше вместо него MainActivity.this
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SkN[i]lpl[e][r]
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 230
30.03.2015, 15:31  [ТС]     Обращение к функции находящейся не в MainActivity #22
dajver, безрезультатно, точно такая же ошибка, и те же строки выделяет

Добавлено через 37 минут
я так понял что context == nul, я проверил на условии его, но MainActivity.this точно не null. Но однако всеравно ошибка...

Добавлено через 37 минут
попробовал сделать такую штуку: создал под
Java
1
2
3
4
public HybridMap(Context context, AttributeSet attrs) {
        super(context, attrs);
//здесь  загрузка карты и ее настройка
}
еще однин конструктор, как мне и советовали
Java
1
2
3
public HybridMap(Context context) {
        super(context);
}
и весь програмный код (загрузка карты и работа с ней) который был в верхнем конструкторе я переместил в этот. и запустил... Ошибок не выдало, да и при нажатии на кнопку не вылетало. Но карта совсем не отобразилась, как будто MapView не создался, просто черный экран и поверх кнопка.

Добавлено через 1 час 19 минут
Как оказалось нельзя объявлять конструктор одноименный основному. Нужно работать с конструктором с двумя параметрами, который объявлен изначально. Проблема все та же:
Java
1
HybridMap hbr = new HybridMap(MainActivity.this, какойто атрибут)
какой сюда атрибут ставить?...
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
30.03.2015, 16:33     Обращение к функции находящейся не в MainActivity #23
SkN[i]lpl[e][r], то есть у вас есть в xml элемент - HybridMap? И вы хотите его в коде использовать? И создаете новый объект HybridMap уже в коде? Уже догадались что не так?
SkN[i]lpl[e][r]
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 230
30.03.2015, 16:48  [ТС]     Обращение к функции находящейся не в MainActivity #24
Spelcrawler, ну почти догадываюсь да в main.xml есть этот элемент. Получается поверх старого создается новый? но как это исправить тогда?...
androbro
312 / 272 / 51
Регистрация: 17.10.2014
Сообщений: 819
30.03.2015, 16:53     Обращение к функции находящейся не в MainActivity #25
SkN[i]lpl[e][r],
Цитата Сообщение от SkN[i]lpl[e][r] Посмотреть сообщение
Получается поверх старого создается новый?
Цитата Сообщение от SkN[i]lpl[e][r] Посмотреть сообщение
но как это исправить тогда?...
ну очевидно же, надо сверху еще и третий создать
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
30.03.2015, 16:55     Обращение к функции находящейся не в MainActivity #26
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от SkN[i]lpl[e][r] Посмотреть сообщение
Получается поверх старого создается новый? но как это исправить тогда?...
Нет! Получается, что это два разных элемента. Вам нужно в xml назначить id элементу, а в коде найти его по id.
XML
1
android:id="@+id/myMap"
Java
1
HybridMap myMap = (HybridMap) findViewById(R.id.myMap);
После этого у вас будет доступ из кода к элементу в xml.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2015, 17:01     Обращение к функции находящейся не в MainActivity
Еще ссылки по теме:

Переделать MainActivity в Fragment Android
Android Как запустить метод Fragment из MainActivity?
MainActivity AsyncTask Android
Android Как получить context MainActivity в Service?
OnClickListener не может вызвать метод с MainActivity Android

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

Или воспользуйтесь поиском по форуму:
SkN[i]lpl[e][r]
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 230
30.03.2015, 17:01  [ТС]     Обращение к функции находящейся не в MainActivity #27
Урааа!!!!!!!! Заработало!!!!!!!!!
Spelcrawler, красавчик!!! Спасибо огромное!!! 2 дня мучился!!!

Добавлено через 56 секунд
Все отлично работает теперь!)
Yandex
Объявления
30.03.2015, 17:01     Обращение к функции находящейся не в MainActivity
Ответ Создать тему
Опции темы

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