2013-03-07 5 views
3

Прежде всего, я последовал за this tutorial, чтобы создать действие с помощью панели действий + вкладки. Что делает эта реализация, так это то, что в макете main_activity имеется фрагмент_контейнер (только линейный макет) и он заменяет его фрагментом в зависимости от выбранной вкладки.Как получить идентификатор фрагмента?

Теперь, я пытаюсь добавить fragment-to-activity communication, но я получаю nullpointerexemption.

Вот мой код:

com.mypackage.MAPFragment map_ = 
(com.mypackage.MAPFragment) getFragmentManager().findFragmentById(R.id.map); 
map_.ActivityToMapMethod(); 

MapFragment фрагмент надувает макет XML, который имеет MAPview с и идентификатором карт. Я не уверен, что карта id - это то, что я должен использовать. Я успешно сделал это раньше в другом приложении, но в это время фрагмент был добавлен через xml, а не с помощью replace().

+0

Вы используете фрагмент пакета поддержки ..? – Pragnani

+0

Nope. Я разрабатываю API уровня 11 и выше. – user1923613

ответ

4

Метод findFragmentById() получает идентификатор фрагмента из контейнера, если Theres фактически является фрагментом внутри него. В противном случае вы вернетесь обратно. findFragmentById (R.id.fragment_container) возвращает фрагмент внутри LinearLayout вашего учебника.

+0

Вот что я сделал для его решения: 'MyMapFragment = new MAPFragment(); ((com.mypackage.MAPFragment) MyMapFragment) .ActivityToMapMethod(); '. Ваш ответ действительно дает важную информацию, я выбираю ее в качестве ответа. Благодарю. – user1923613

+0

@ user1923613, я не думаю, что создание «нового» экземпляра вашего фрагмента - хороший подход. – eRaisedToX

0

Вы должны попробовать:

this.getId(); 

Он работал для меня, и я надеюсь, что это работает для вас. Надеюсь, это поможет! Удачи!

Смежные вопросы