получить SupportMapFragment в другом классе

можно ли получить доступ из googlemap (SupportMapFragment) в другом классе?

я тестирую несколько методов и получаю следующие ошибки:

map = ((SupportMapFragment)  getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

вернуть:

java.lang.NullPointerException


map = ((SupportMapFragment)  ((FragmentActivity)context).getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

вернуть:

android.app.Application не может быть преобразован в android.support.v4.app.FragmentActivity

примечание: я не могу изменить класс, чтобы расширить фрагмент


person hamedata    schedule 24.04.2015    source источник
comment
other class ? означает   -  person M D    schedule 24.04.2015
comment
@hamedata, что вы имеете в виду, когда говорите «другой класс»? Вы имеете в виду от деятельности? фрагмент?   -  person Alexios Karapetsas    schedule 24.04.2015
comment
используйте это ((SupportMapFragment) getActivity() .getSupportFragmentManager() .findFragmentById(R.id.map_view)).getMap();   -  person Sree Reddy Menon    schedule 24.04.2015
comment
извините, я имею в виду бег в классе (не активность). когда я пытаюсь активировать SupportMapFragment, все в порядке. но когда я пытаюсь сделать то же самое в классе, я получаю ошибки выше!   -  person hamedata    schedule 24.04.2015
comment
@Sree Reddy Menon с вашим кодом предложения, который я получаю. Метод getActivity () не определен для ...   -  person hamedata    schedule 24.04.2015
comment
передать контекст другому классу с помощью конструктора, подобного тому, как мы это делаем в адаптере списка.   -  person Sree Reddy Menon    schedule 24.04.2015
comment
Как вы проходите свой context ? Если вы позвоните getApplicationContext(), вы увидите эту проблему. Используйте Context вид MyActivity.this или this вашего звонящего Activity.   -  person kandroidj    schedule 24.04.2015
comment
для передачи контекста в класс я использую: gLocation = new GLocation(context); в действии, а в классе я использую public GLocation(Context _context) { this.context = _context; }   -  person hamedata    schedule 24.04.2015


Ответы (1)


Если вы хотите вызвать его из Activity, вам нужно расширить FragmentActivity из библиотеки поддержки. В противном случае, и если вы ориентируетесь на уровень API 11 и выше, статический метод getFragmentManager может выполнить эту работу (Activity.getFragmentManager)

person Alexios Karapetsas    schedule 24.04.2015
comment
мой класс расширяет фрагментарную активность (общедоступный класс gLocation расширяет FragmentActivity), но я не могу получить карту с картой = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); - person hamedata; 24.04.2015
comment
@hamedata Посмотрите здесь stackoverflow.com/questions/14067889/ - person Alexios Karapetsas; 24.04.2015